Mercurial Hosting > luan
diff src/luan/LuanJavaFunction.java @ 1259:e8020216dee7
add Luan.to_luan and fix multipart/form-data
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Sun, 23 Sep 2018 17:58:40 -0600 |
parents | aa8517d7c065 |
children | 9fa8b8389578 |
line wrap: on
line diff
--- a/src/luan/LuanJavaFunction.java Thu Sep 20 22:11:11 2018 -0600 +++ b/src/luan/LuanJavaFunction.java Sun Sep 23 17:58:40 2018 -0600 @@ -225,16 +225,7 @@ } return RTN_SAME; } -/* - private static boolean isNumber(Class rtnType) { - return rtnType == Short.TYPE - || rtnType == Integer.TYPE - || rtnType == Long.TYPE - || rtnType == Float.TYPE - || rtnType == Double.TYPE - ; - } -*/ + private interface ArgConverter { public Object convert(LuanState luan,Object obj) throws LuanException; } @@ -348,32 +339,8 @@ private static final ArgConverter ARG_TABLE = new ArgConverter() { public Object convert(LuanState luan,Object obj) { - if( obj == null ) - return null; - if( obj instanceof List ) { - return new LuanTable((List)obj); - } - if( obj instanceof Map ) { - return new LuanTable((Map)obj); - } - if( obj instanceof Set ) { - return new LuanTable((Set)obj); - } - Class cls = obj.getClass(); - if( cls.isArray() ) { - if( cls.getComponentType().isPrimitive() ) { - int len = Array.getLength(obj); - List list = new ArrayList(); - for( int i=0; i<len; i++ ) { - list.add(Array.get(obj,i)); - } - return new LuanTable(list); - } else { - Object[] a = (Object[])obj; - return new LuanTable(Arrays.asList(a)); - } - } - return obj; + LuanTable tbl = Luan.toTable(obj); + return tbl!=null ? tbl : obj; } @Override public String toString() { return "ARG_TABLE";