diff src/luan/Luan.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 ce3279ef1bd9
children 4b5b84853f6f
line wrap: on
line diff
--- a/src/luan/Luan.java	Thu Sep 20 22:11:11 2018 -0600
+++ b/src/luan/Luan.java	Sun Sep 23 17:58:40 2018 -0600
@@ -1,5 +1,6 @@
 package luan;
 
+import java.lang.reflect.Array;
 import java.util.List;
 import java.util.ArrayList;
 import java.util.Map;
@@ -130,7 +131,7 @@
 		return load(text,sourceName,null);
 	}
 
-
+/*
 	public static Object toLuan(Object obj) throws LuanException {
 		if( !type(obj).equals("java") )
 			return obj;
@@ -173,6 +174,7 @@
 		}
 		return tbl;
 	}
+*/
 
 	public static Object toJava(Object obj) throws LuanException {
 		if( !(obj instanceof LuanTable) )
@@ -200,6 +202,36 @@
 		return v;
 	}
 
+	public static LuanTable toTable(Object obj) {
+		if( obj == null )
+			return null;
+		if( obj instanceof LuanTable )
+			return (LuanTable)obj;
+		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 null;
+	}
 
 	private Luan() {}  // never
 }