changeset 1464:465b4a0dae4a

empty list vs map
author Franklin Schmidt <fschmidt@gmail.com>
date Fri, 03 Apr 2020 10:04:52 -0600
parents fb003c4003dd
children 5e3870618377
files src/luan/Luan.java src/luan/LuanTable.java src/luan/impl/LuanImpl.java src/luan/modules/Table.luan
diffstat 4 files changed, 15 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/src/luan/Luan.java	Mon Mar 30 18:31:18 2020 -0600
+++ b/src/luan/Luan.java	Fri Apr 03 10:04:52 2020 -0600
@@ -322,7 +322,7 @@
 		if( !(obj instanceof LuanTable) )
 			return obj;
 		LuanTable tbl = (LuanTable)obj;
-		if( tbl.isList() ) {
+		if( !tbl.isMap() ) {
 			List list = new ArrayList();
 			for( Object el : tbl.asList() ) {
 				list.add( toJava(el) );
--- a/src/luan/LuanTable.java	Mon Mar 30 18:31:18 2020 -0600
+++ b/src/luan/LuanTable.java	Fri Apr 03 10:04:52 2020 -0600
@@ -28,6 +28,7 @@
 
 	public LuanTable(Luan luan,List list){
 		this.luan = luan;
+		list();
 		int n = list.size();
 		for( int i=0; i<n; i++ ) {
 			Object val = list.get(i);
@@ -123,6 +124,10 @@
 		return map==null || map.isEmpty();
 	}
 
+	boolean isMap() {
+		return map!=null || list==null;
+	}
+
 	public List<Object> asList() {
 		check();
 		return list!=null ? list : Collections.emptyList();
@@ -550,4 +555,8 @@
 	public static void setSecurity(LuanTable tbl,String security) {
 		tbl.security = security;
 	}
+
+	public static void debug(LuanTable table) {
+		System.out.println("isMap "+table.isMap());
+	}
 }
--- a/src/luan/impl/LuanImpl.java	Mon Mar 30 18:31:18 2020 -0600
+++ b/src/luan/impl/LuanImpl.java	Fri Apr 03 10:04:52 2020 -0600
@@ -240,8 +240,7 @@
 					table.rawPut(key,value);
 			} else {
 				i++;
-				if( fld != null )
-					table.rawPut(i,fld);
+				table.rawPut(i,fld);
 			}
 		}
 		return table;
--- a/src/luan/modules/Table.luan	Mon Mar 30 18:31:18 2020 -0600
+++ b/src/luan/modules/Table.luan	Fri Apr 03 10:04:52 2020 -0600
@@ -21,6 +21,7 @@
 local type = Luan.type or error()
 local pairs = Luan.pairs or error()
 local toTable = TableLuan.toTable or error()
+local copy = Table.copy or error()
 
 function Table.java_to_table_shallow(obj)
 	local rtn = toTable(obj)
@@ -41,13 +42,12 @@
 end
 
 function deepen(tbl,java_to_table_shallow)
-	local rtn = {}
-	for key, value in pairs(tbl) do
+	for key, value in pairs(copy(tbl)) do
 		key = to_luan(key,java_to_table_shallow)
 		value = to_luan(value,java_to_table_shallow)
-		rtn[key] = value
+		tbl[key] = value
 	end
-	return rtn
+	return tbl
 end
 
 function Table.java_to_table_deep(obj,java_to_table_shallow)