diff core/src/luan/LuanJavaFunction.java @ 396:ba8b0aae6453

work on manual; add LuanJavaFunction.ARG_COLLECTION;
author Franklin Schmidt <fschmidt@gmail.com>
date Sun, 26 Apr 2015 21:19:10 -0600
parents 899253043270
children 1b38de2b1845
line wrap: on
line diff
--- a/core/src/luan/LuanJavaFunction.java	Fri Apr 24 17:42:22 2015 -0600
+++ b/core/src/luan/LuanJavaFunction.java	Sun Apr 26 21:19:10 2015 -0600
@@ -10,6 +10,7 @@
 import java.util.HashMap;
 import java.util.Set;
 import java.util.Arrays;
+import java.util.Collection;
 
 
 public final class LuanJavaFunction extends LuanFunction {
@@ -461,6 +462,22 @@
 		}
 	};
 
+	private static final ArgConverter ARG_COLLECTION = new ArgConverter() {
+		public Object convert(Object obj) {
+			if( obj instanceof LuanTableImpl ) {
+				LuanTableImpl t = (LuanTableImpl)obj;
+				if( t.isList() )
+					return t.asList();
+				if( t.isSet() )
+					return t.asSet();
+			}
+			return obj;
+		}
+		@Override public String toString() {
+			return "ARG_COLLECTION";
+		}
+	};
+
 	private static class ArgArray implements ArgConverter {
 		private final Object[] a;
 
@@ -529,6 +546,8 @@
 			return ARG_LIST;
 		if( cls.equals(Set.class) )
 			return ARG_SET;
+		if( cls.equals(Collection.class) )
+			return ARG_COLLECTION;
 		if( cls.isArray() && !cls.getComponentType().isPrimitive() )
 			return new ArgArray(cls);
 		return ARG_SAME;