Mercurial Hosting > luan
changeset 302:2f8938fc518c
fix modules Binary and Html
git-svn-id: https://luan-java.googlecode.com/svn/trunk@303 21e917c8-12df-6dd8-5cb6-c86387c605b9
author | fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9> |
---|---|
date | Thu, 18 Dec 2014 04:56:30 +0000 |
parents | a6bf8ff720f8 |
children | fdb4bd391c28 |
files | core/src/luan/modules/Binary.luan core/src/luan/modules/BinaryLuan.java core/src/luan/modules/Html.luan core/src/luan/modules/HtmlLuan.java core/src/luan/modules/String.luan core/src/luan/modules/StringLuan.java |
diffstat | 6 files changed, 27 insertions(+), 43 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/src/luan/modules/Binary.luan Thu Dec 18 04:56:30 2014 +0000 @@ -0,0 +1,5 @@ +java() +import "java:luan.modules.BinaryLuan" + +pack = BinaryLuan.pack +unpack = BinaryLuan.unpack
--- a/core/src/luan/modules/BinaryLuan.java Wed Dec 17 12:35:57 2014 +0000 +++ b/core/src/luan/modules/BinaryLuan.java Thu Dec 18 04:56:30 2014 +0000 @@ -4,30 +4,22 @@ import luan.LuanState; import luan.LuanTable; import luan.LuanFunction; -import luan.LuanJavaFunction; import luan.LuanException; +import luan.LuanMethod; public final class BinaryLuan { - public static final LuanFunction LOADER = new LuanFunction() { - @Override public Object call(LuanState luan,Object[] args) { - LuanTable module = Luan.newTable(); - try { - add( module, "to_string", new byte[0].getClass() ); - } catch(NoSuchMethodException e) { - throw new RuntimeException(e); - } - return module; - } - }; - - private static void add(LuanTable t,String method,Class<?>... parameterTypes) throws NoSuchMethodException { - t.put( method, new LuanJavaFunction(BinaryLuan.class.getMethod(method,parameterTypes),null) ); + @LuanMethod public static byte[] pack(byte... bytes) { + return bytes; } - public static String to_string(byte[] bytes) { - return new String(bytes); + @LuanMethod public static Byte[] unpack(byte[] binary) { + Byte[] bytes = new Byte[binary.length]; + for( int i=0; i<binary.length; i++ ) { + bytes[i] = binary[i]; + } + return bytes; } }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/src/luan/modules/Html.luan Thu Dec 18 04:56:30 2014 +0000 @@ -0,0 +1,4 @@ +java() +import "java:luan.modules.HtmlLuan" + +encode = HtmlLuan.encode
--- a/core/src/luan/modules/HtmlLuan.java Wed Dec 17 12:35:57 2014 +0000 +++ b/core/src/luan/modules/HtmlLuan.java Thu Dec 18 04:56:30 2014 +0000 @@ -4,28 +4,11 @@ import luan.LuanState; import luan.LuanTable; import luan.LuanFunction; -import luan.LuanJavaFunction; import luan.LuanException; public final class HtmlLuan { - public static final LuanFunction LOADER = new LuanFunction() { - @Override public Object call(LuanState luan,Object[] args) { - LuanTable module = Luan.newTable(); - try { - add( module, "encode", String.class ); - } catch(NoSuchMethodException e) { - throw new RuntimeException(e); - } - return module; - } - }; - - private static void add(LuanTable t,String method,Class<?>... parameterTypes) throws NoSuchMethodException { - t.put( method, new LuanJavaFunction(HtmlLuan.class.getMethod(method,parameterTypes),null) ); - } - public static String encode(String s) { char[] a = s.toCharArray(); StringBuilder buf = new StringBuilder();
--- a/core/src/luan/modules/String.luan Wed Dec 17 12:35:57 2014 +0000 +++ b/core/src/luan/modules/String.luan Thu Dec 18 04:56:30 2014 +0000 @@ -1,7 +1,6 @@ java() import "java:luan.modules.StringLuan" -to_binary = StringLuan.to_binary byte = StringLuan.byte_ char = StringLuan.char_ concat = StringLuan.concat
--- a/core/src/luan/modules/StringLuan.java Wed Dec 17 12:35:57 2014 +0000 +++ b/core/src/luan/modules/StringLuan.java Thu Dec 18 04:56:30 2014 +0000 @@ -51,15 +51,16 @@ return i==null ? dflt : end(s,i); } - public static byte[] to_binary(String s) { - return s.getBytes(); - } - - public static int[] byte_(String s) { + @LuanMethod public static Integer[] byte_(String s,Integer i,Integer j) { + if( i== null ) + i = 1; + if( j==null ) + j = i; + s = s.substring(i-1,j); char[] a = s.toCharArray(); - int[] chars = new int[a.length]; - for( int i=0; i<a.length; i++ ) { - chars[i] = a[i]; + Integer[] chars = new Integer[a.length]; + for( int k=0; k<a.length; k++ ) { + chars[k] = (int)a[k]; } return chars; }