1.1 --- a/rt/emul/mini/src/main/java/org/apidesign/bck2brwsr/emul/lang/System.java Sun Mar 10 21:28:50 2013 +0100
1.2 +++ b/rt/emul/mini/src/main/java/org/apidesign/bck2brwsr/emul/lang/System.java Thu Jan 09 08:21:26 2014 +0100
1.3 @@ -19,6 +19,7 @@
1.4
1.5 import java.lang.reflect.Method;
1.6 import org.apidesign.bck2brwsr.core.JavaScriptBody;
1.7 +import org.apidesign.bck2brwsr.core.JavaScriptOnly;
1.8
1.9 /**
1.10 *
1.11 @@ -71,4 +72,27 @@
1.12 }
1.13 @JavaScriptBody(args = { "obj" }, body="return vm.java_lang_Object(false).hashCode__I.call(obj);")
1.14 public static native int identityHashCode(Object obj);
1.15 +
1.16 + @JavaScriptOnly(name = "toJS", value = "function(v) {\n" +
1.17 + " if (v === null) return null;\n" +
1.18 + " if (Object.prototype.toString.call(v) === '[object Array]') {\n" +
1.19 + " return vm.org_apidesign_bck2brwsr_emul_lang_System(false).convArray__Ljava_lang_Object_2Ljava_lang_Object_2(v);\n" +
1.20 + " }\n" +
1.21 + " return v.valueOf();\n" +
1.22 + "}\n"
1.23 + )
1.24 + public static native int toJS();
1.25 +
1.26 + private static Object convArray(Object o) {
1.27 + if (o instanceof Object[]) {
1.28 + Object[] arr = (Object[]) o;
1.29 + final int l = arr.length;
1.30 + Object[] ret = new Object[l];
1.31 + for (int i = 0; i < l; i++) {
1.32 + ret[i] = convArray(arr[i]);
1.33 + }
1.34 + return ret;
1.35 + }
1.36 + return o;
1.37 + }
1.38 }