Mercurial Hosting > luan
annotate src/luan/modules/BinaryLuan.java @ 1828:09e90d94b7b5 default tip
add DomainFilter
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Sun, 15 Sep 2024 19:51:16 -0600 |
parents | f7e2df85fc0a |
children |
rev | line source |
---|---|
167
4c0131c2b650
merge luan/lib into modules
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
142
diff
changeset
|
1 package luan.modules; |
113
8c706d6eb5dc
add binary type
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
2 |
1257
e38f5869e9df
don't reset in send_redirect and other improvements
Franklin Schmidt <fschmidt@gmail.com>
parents:
775
diff
changeset
|
3 import java.io.UnsupportedEncodingException; |
1649
f7e2df85fc0a
add String.digest_message
Franklin Schmidt <fschmidt@gmail.com>
parents:
1335
diff
changeset
|
4 import java.security.MessageDigest; |
f7e2df85fc0a
add String.digest_message
Franklin Schmidt <fschmidt@gmail.com>
parents:
1335
diff
changeset
|
5 import java.security.NoSuchAlgorithmException; |
221
ec016471c6eb
make LuanTable an interface
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
171
diff
changeset
|
6 import luan.Luan; |
113
8c706d6eb5dc
add binary type
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
7 import luan.LuanTable; |
8c706d6eb5dc
add binary type
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
8 import luan.LuanFunction; |
124
f537ff5e511d
minor cleanup
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
113
diff
changeset
|
9 import luan.LuanException; |
113
8c706d6eb5dc
add binary type
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
10 |
8c706d6eb5dc
add binary type
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
11 |
168
ebe9db183eb7
rename *Lib.java to *Luan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
167
diff
changeset
|
12 public final class BinaryLuan { |
113
8c706d6eb5dc
add binary type
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
13 |
305
5e7450ac27f2
rename String.byte() to String.unicode();
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
302
diff
changeset
|
14 static int start(byte[] binary,int i) { |
5e7450ac27f2
rename String.byte() to String.unicode();
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
302
diff
changeset
|
15 int len = binary.length; |
5e7450ac27f2
rename String.byte() to String.unicode();
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
302
diff
changeset
|
16 return i==0 ? 0 : i > 0 ? Math.min(i-1,len) : Math.max(len+i,0); |
5e7450ac27f2
rename String.byte() to String.unicode();
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
302
diff
changeset
|
17 } |
5e7450ac27f2
rename String.byte() to String.unicode();
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
302
diff
changeset
|
18 |
5e7450ac27f2
rename String.byte() to String.unicode();
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
302
diff
changeset
|
19 static int start(byte[] binary,Integer i,int dflt) { |
5e7450ac27f2
rename String.byte() to String.unicode();
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
302
diff
changeset
|
20 return i==null ? dflt : start(binary,i); |
5e7450ac27f2
rename String.byte() to String.unicode();
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
302
diff
changeset
|
21 } |
5e7450ac27f2
rename String.byte() to String.unicode();
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
302
diff
changeset
|
22 |
5e7450ac27f2
rename String.byte() to String.unicode();
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
302
diff
changeset
|
23 static int end(byte[] binary,int i) { |
5e7450ac27f2
rename String.byte() to String.unicode();
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
302
diff
changeset
|
24 int len = binary.length; |
5e7450ac27f2
rename String.byte() to String.unicode();
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
302
diff
changeset
|
25 return i==0 ? 0 : i > 0 ? Math.min(i,len) : Math.max(len+i+1,0); |
5e7450ac27f2
rename String.byte() to String.unicode();
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
302
diff
changeset
|
26 } |
5e7450ac27f2
rename String.byte() to String.unicode();
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
302
diff
changeset
|
27 |
5e7450ac27f2
rename String.byte() to String.unicode();
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
302
diff
changeset
|
28 static int end(byte[] binary,Integer i,int dflt) { |
5e7450ac27f2
rename String.byte() to String.unicode();
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
302
diff
changeset
|
29 return i==null ? dflt : end(binary,i); |
5e7450ac27f2
rename String.byte() to String.unicode();
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
302
diff
changeset
|
30 } |
5e7450ac27f2
rename String.byte() to String.unicode();
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
302
diff
changeset
|
31 |
1335 | 32 public static Byte[] byte_(byte[] binary,Integer i,Integer j) throws LuanException { |
646
cdc70de628b5
simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents:
576
diff
changeset
|
33 Utils.checkNotNull(binary); |
305
5e7450ac27f2
rename String.byte() to String.unicode();
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
302
diff
changeset
|
34 int start = start(binary,i,1); |
5e7450ac27f2
rename String.byte() to String.unicode();
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
302
diff
changeset
|
35 int end = end(binary,j,start+1); |
5e7450ac27f2
rename String.byte() to String.unicode();
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
302
diff
changeset
|
36 Byte[] bytes = new Byte[end-start]; |
5e7450ac27f2
rename String.byte() to String.unicode();
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
302
diff
changeset
|
37 for( int k=0; k<bytes.length; k++ ) { |
5e7450ac27f2
rename String.byte() to String.unicode();
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
302
diff
changeset
|
38 bytes[k] = binary[start+k]; |
302
2f8938fc518c
fix modules Binary and Html
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
39 } |
2f8938fc518c
fix modules Binary and Html
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
221
diff
changeset
|
40 return bytes; |
113
8c706d6eb5dc
add binary type
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
41 } |
8c706d6eb5dc
add binary type
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
42 |
1335 | 43 public static byte[] binary(byte... bytes) { |
305
5e7450ac27f2
rename String.byte() to String.unicode();
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
302
diff
changeset
|
44 return bytes; |
5e7450ac27f2
rename String.byte() to String.unicode();
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
302
diff
changeset
|
45 } |
5e7450ac27f2
rename String.byte() to String.unicode();
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
302
diff
changeset
|
46 |
1257
e38f5869e9df
don't reset in send_redirect and other improvements
Franklin Schmidt <fschmidt@gmail.com>
parents:
775
diff
changeset
|
47 private static String toString(byte[] a) { |
e38f5869e9df
don't reset in send_redirect and other improvements
Franklin Schmidt <fschmidt@gmail.com>
parents:
775
diff
changeset
|
48 char[] ac = new char[a.length]; |
e38f5869e9df
don't reset in send_redirect and other improvements
Franklin Schmidt <fschmidt@gmail.com>
parents:
775
diff
changeset
|
49 for( int i=0; i<a.length; i++ ) { |
e38f5869e9df
don't reset in send_redirect and other improvements
Franklin Schmidt <fschmidt@gmail.com>
parents:
775
diff
changeset
|
50 ac[i] = (char)a[i]; |
e38f5869e9df
don't reset in send_redirect and other improvements
Franklin Schmidt <fschmidt@gmail.com>
parents:
775
diff
changeset
|
51 } |
e38f5869e9df
don't reset in send_redirect and other improvements
Franklin Schmidt <fschmidt@gmail.com>
parents:
775
diff
changeset
|
52 return new String(ac); |
e38f5869e9df
don't reset in send_redirect and other improvements
Franklin Schmidt <fschmidt@gmail.com>
parents:
775
diff
changeset
|
53 } |
e38f5869e9df
don't reset in send_redirect and other improvements
Franklin Schmidt <fschmidt@gmail.com>
parents:
775
diff
changeset
|
54 |
e38f5869e9df
don't reset in send_redirect and other improvements
Franklin Schmidt <fschmidt@gmail.com>
parents:
775
diff
changeset
|
55 public static String to_string(byte[] binary,String charsetName) throws LuanException, UnsupportedEncodingException { |
e38f5869e9df
don't reset in send_redirect and other improvements
Franklin Schmidt <fschmidt@gmail.com>
parents:
775
diff
changeset
|
56 Utils.checkNotNull(binary); |
e38f5869e9df
don't reset in send_redirect and other improvements
Franklin Schmidt <fschmidt@gmail.com>
parents:
775
diff
changeset
|
57 return charsetName!=null ? new String(binary,charsetName) : toString(binary); |
360
cbb94a7c7a9e
allow mail attachments;
Franklin Schmidt <fschmidt@gmail.com>
parents:
305
diff
changeset
|
58 } |
cbb94a7c7a9e
allow mail attachments;
Franklin Schmidt <fschmidt@gmail.com>
parents:
305
diff
changeset
|
59 |
1649
f7e2df85fc0a
add String.digest_message
Franklin Schmidt <fschmidt@gmail.com>
parents:
1335
diff
changeset
|
60 public static byte[] digest_message(String algorithm,byte[] input) throws NoSuchAlgorithmException { |
f7e2df85fc0a
add String.digest_message
Franklin Schmidt <fschmidt@gmail.com>
parents:
1335
diff
changeset
|
61 return MessageDigest.getInstance(algorithm).digest(input); |
f7e2df85fc0a
add String.digest_message
Franklin Schmidt <fschmidt@gmail.com>
parents:
1335
diff
changeset
|
62 } |
f7e2df85fc0a
add String.digest_message
Franklin Schmidt <fschmidt@gmail.com>
parents:
1335
diff
changeset
|
63 |
f7e2df85fc0a
add String.digest_message
Franklin Schmidt <fschmidt@gmail.com>
parents:
1335
diff
changeset
|
64 public static String to_hex(byte[] a) { |
f7e2df85fc0a
add String.digest_message
Franklin Schmidt <fschmidt@gmail.com>
parents:
1335
diff
changeset
|
65 StringBuilder sb = new StringBuilder(); |
f7e2df85fc0a
add String.digest_message
Franklin Schmidt <fschmidt@gmail.com>
parents:
1335
diff
changeset
|
66 for( byte b : a ) { |
f7e2df85fc0a
add String.digest_message
Franklin Schmidt <fschmidt@gmail.com>
parents:
1335
diff
changeset
|
67 sb.append( String.format("%02x",b) ); |
f7e2df85fc0a
add String.digest_message
Franklin Schmidt <fschmidt@gmail.com>
parents:
1335
diff
changeset
|
68 } |
f7e2df85fc0a
add String.digest_message
Franklin Schmidt <fschmidt@gmail.com>
parents:
1335
diff
changeset
|
69 return sb.toString(); |
f7e2df85fc0a
add String.digest_message
Franklin Schmidt <fschmidt@gmail.com>
parents:
1335
diff
changeset
|
70 } |
f7e2df85fc0a
add String.digest_message
Franklin Schmidt <fschmidt@gmail.com>
parents:
1335
diff
changeset
|
71 |
113
8c706d6eb5dc
add binary type
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
72 } |