Mercurial Hosting > luan
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;