diff core/src/luan/LuanJavaFunction.java @ 431:3ffe8ba5b297

TableLuan cleanup
author Franklin Schmidt <fschmidt@gmail.com>
date Sat, 02 May 2015 21:12:48 -0600
parents 1b38de2b1845
children d9df6d6cb927
line wrap: on
line diff
--- a/core/src/luan/LuanJavaFunction.java	Sat May 02 20:35:26 2015 -0600
+++ b/core/src/luan/LuanJavaFunction.java	Sat May 02 21:12:48 2015 -0600
@@ -402,12 +402,24 @@
 			if( obj instanceof Map ) {
 				@SuppressWarnings("unchecked")
 				Map<Object,Object> map = (Map<Object,Object>)obj;
-				return new LuanTable(map);
+				LuanTable tbl = new LuanTable();
+				for( Map.Entry<Object,Object> entry : map.entrySet() ) {
+					Object key = entry.getKey();
+					Object value = entry.getValue();
+					if( key != null && value != null )
+						tbl.rawPut(key,value);
+				}
+				return tbl;
 			}
 			if( obj instanceof Set ) {
 				@SuppressWarnings("unchecked")
 				Set<Object> set = (Set<Object>)obj;
-				return new LuanTable(set);
+				LuanTable tbl = new LuanTable();
+				for( Object el : set ) {
+					if( el != null )
+						tbl.rawPut(el,Boolean.TRUE);
+				}
+				return tbl;
 			}
 			Class cls = obj.getClass();
 			if( cls.isArray() && !cls.getComponentType().isPrimitive() ) {