Revision: 3507
          http://vexi.svn.sourceforge.net/vexi/?rev=3507&view=rev
Author:   clrg
Date:     2009-05-25 23:54:55 +0000 (Mon, 25 May 2009)

Log Message:
-----------
Now vexi.trace takes multiple arguments, logs a comma-delimited string, and 
also returns it

Modified Paths:
--------------
    trunk/core/org.ibex.js/src/org/ibex/js/JSON.java
    trunk/core/org.vexi.core/src/org/vexi/core/Vexi.jpp

Modified: trunk/core/org.ibex.js/src/org/ibex/js/JSON.java
===================================================================
--- trunk/core/org.ibex.js/src/org/ibex/js/JSON.java    2009-05-22 21:06:27 UTC 
(rev 3506)
+++ trunk/core/org.ibex.js/src/org/ibex/js/JSON.java    2009-05-25 23:54:55 UTC 
(rev 3507)
@@ -11,7 +11,7 @@
         }
     }
     
-    static void marshal(StringBuffer sb, JS value) throws JSExn{
+    static public void marshal(StringBuffer sb, JS value) throws JSExn{
         
         if(value==null){
             sb.append("null");

Modified: trunk/core/org.vexi.core/src/org/vexi/core/Vexi.jpp
===================================================================
--- trunk/core/org.vexi.core/src/org/vexi/core/Vexi.jpp 2009-05-22 21:06:27 UTC 
(rev 3506)
+++ trunk/core/org.vexi.core/src/org/vexi/core/Vexi.jpp 2009-05-25 23:54:55 UTC 
(rev 3507)
@@ -4,6 +4,7 @@
 
 package org.vexi.core;
 
+import java.lang.StringBuffer;
 import org.ibex.crypto.MD5;
 import org.ibex.js.*;
 import org.vexi.js.*;
@@ -238,81 +239,90 @@
         try {
             //#switch(JSU.toString(method))
             case "bless":        return bless_jsthread(this_, 
args[0],(args.length<2)?null:args[1]);
-            case "cache": return Resources.cache(args);
-            case "date": return new JSDate(args);
-            case "file.load": return accessFile(args,false);
-            case "file.save": return accessFile(args,true);
-            case "js.eval": return Methods.eval(args);
+            case "cache":        return Resources.cache(args);
+            case "date":         return new JSDate(args);
+            case "file.load":    return accessFile(args,false);
+            case "file.save":    return accessFile(args,true);
+            case "js.eval":      return Methods.eval(args);
             // FIXME support object dumping
             case "log.debug":    if(args.length<1) JSU.debug(null); else 
JSU.debug(args[0]); return null;
             case "log.info":     if(args.length<1) JSU.info(null); else 
JSU.info(args[0]); return null;
             case "log.warn":     if(args.length<1) JSU.warn(null); else 
JSU.warn(args[0]); return null;
             case "log.error":    if(args.length<1) JSU.error(null); else 
JSU.error(args[0]); return null;
             case "net.rpc.soap": return new SOAP(JSU.toString(args[0]), 
JSU.toString(args[1]), JSU.toString(args[2]));
+            case "trace":
+                StringBuffer sb = new StringBuffer();
+                for (int i=0; i<args.length; i++) {
+                    if (i>0) sb.append(',');
+                    JSON.marshal(sb, args[i]);
+                }
+                JS ret = JSU.S(sb.toString());
+                JSU.warn(ret);
+                return ret;
             //#end
  
             switch (args.length) {
-                case 0:
-                    //#switch(JSU.toString(method))
-                       case "exit": Main.exit(); return null; 
-                    case "thread.yield": JSU.sleep(-1); return null;
-                    //#end
-                    break;
-                case 1:
-                    //#switch(JSU.toString(method))
-                    case "clone":
-                        if(args[0] == null) throw new JSExn("can't clone the 
null value");
-                        return new JS.Clone(args[0]);
-                    case "crypto.rsa": /* FEATURE */ return null;
-                    case "crypto.md5":
-                        byte[] content = JSU.toString(args[0]).getBytes();
-                        MD5 md5 = new MD5();
-                        md5.update(content, 0, content.length);
-                        byte[] data = new byte[md5.getDigestSize()];
-                        md5.doFinal(data, 0);
-                        return JSU.S(Encode.bytesToHex(data).toLowerCase());
-                    case "crypto.sha1": /* FEATURE */ return null;
-                    case "crypto.rc4": /* FEATURE */ return null;
-                    case "file.remove": ((Fountain.File)args[0]).remove(); 
return null;
-                    case "js.stringify": return JSON.marshal(args[0]);
-                    case "net.rpc.xml": return new 
XMLRPC(JSU.toString(args[0]), "");
-                    case "regexp": return new JSRegexp(args[0], null);
-                    case "thread.sleep": JSU.sleep(JSU.toInt(args[0])); return 
null;
-                    case "trace": JSU.warn(JSON.marshal(args[0])); return 
null; 
-                    case "ui.browser": 
Platform.newBrowserWindow(JSU.toString(args[0])); return null;
-                    case "ui.font.install": Resources.installFont(args[0]); 
return null;
-                    case "ui.insets":
-                        if(args[0] == null) throw new JSExn("can't discern 
insets for a null frame");
-                        Box b = null;
-                        try{ b = (Box)args[0]; }
-                        catch(ClassCastException cce) { throw new JSExn("can't 
discern insets for non-box '"+args[0]+"'"); }
-                        Surface s = null;
-                        try{ s = b.getSurface(); }
-                        catch(ClassCastException cce) { throw new JSExn("can't 
discern insets for box not attached to a surface"); }
-                        JS ret = new JS.Obj();
-                        ret.put(JSU.S("top"), JSU.N(s.topInset));
-                        ret.put(JSU.S("left"), JSU.N(s.leftInset));
-                        ret.put(JSU.S("bottom"), JSU.N(s.bottomInset));
-                        ret.put(JSU.S("right"), JSU.N(s.rightInset));
-                        return ret;
-                    case "unclone": return args[0].unclone();
-                    //#end
-                    break;
-                case 2:
-                    //#switch(JSU.toString(method))
-                    case "regexp": return new JSRegexp(args[0], args[1]);
-                    //#end
-                case 3:
-                    //#switch(JSU.toString(method))
-                    case "ui.font.height":
-                        try { return JSU.N(Font.getFont(args[0], 
Text.jsToPointsize(args[1])).textheight(JSU.toString(args[2]))); }
-                        catch (Exception e) { throw new JSExn("called 
vexi.ui.font.height with illegal arguments"); }
-                    case "ui.font.wait": throw new Error("FIXME: 
vexi.ui.font.wait not implemented");
-                    case "ui.font.width":
-                        try { return JSU.N(Font.getFont(args[0], 
Text.jsToPointsize(args[1])).textwidth(JSU.toString(args[2]))); }
-                        catch (Exception e) { throw new JSExn("called 
vexi.ui.font.width with illegal arguments"); }
-                    //#end
-                    break;
+            case 0:
+                //#switch(JSU.toString(method))
+               case "exit": Main.exit(); return null; 
+                case "thread.yield": JSU.sleep(-1); return null;
+                //#end
+                break;
+            case 1:
+                //#switch(JSU.toString(method))
+                case "clone":
+                    if (args[0] == null) throw new JSExn("can't clone the null 
value");
+                    return new JS.Clone(args[0]);
+                case "crypto.rsa": /* FEATURE */ return null;
+                case "crypto.md5":
+                    byte[] content = JSU.toString(args[0]).getBytes();
+                    MD5 md5 = new MD5();
+                    md5.update(content, 0, content.length);
+                    byte[] data = new byte[md5.getDigestSize()];
+                    md5.doFinal(data, 0);
+                    return JSU.S(Encode.bytesToHex(data).toLowerCase());
+                case "crypto.sha1": /* FEATURE */ return null;
+                case "crypto.rc4": /* FEATURE */ return null;
+                case "file.remove": ((Fountain.File)args[0]).remove(); return 
null;
+                case "js.stringify": return JSON.marshal(args[0]);
+                case "net.rpc.xml": return new XMLRPC(JSU.toString(args[0]), 
"");
+                case "regexp": return new JSRegexp(args[0], null);
+                case "thread.sleep": JSU.sleep(JSU.toInt(args[0])); return 
null;
+                case "ui.browser": 
Platform.newBrowserWindow(JSU.toString(args[0])); return null;
+                case "ui.font.install": Resources.installFont(args[0]); return 
null;
+                case "ui.insets":
+                    if (args[0] == null) throw new JSExn("can't discern insets 
for a null frame");
+                    Box b = null;
+                    try { b = (Box)args[0]; }
+                    catch(ClassCastException cce) { throw new JSExn("can't 
discern insets for non-box '"+args[0]+"'"); }
+                    Surface s = null;
+                    try { s = b.getSurface(); }
+                    catch(ClassCastException cce) { throw new JSExn("can't 
discern insets for box not attached to a surface"); }
+                    JS ret = new JS.Obj();
+                    ret.put(JSU.S("top"), JSU.N(s.topInset));
+                    ret.put(JSU.S("left"), JSU.N(s.leftInset));
+                    ret.put(JSU.S("bottom"), JSU.N(s.bottomInset));
+                    ret.put(JSU.S("right"), JSU.N(s.rightInset));
+                    return ret;
+                case "unclone": return args[0].unclone();
+                //#end
+                break;
+            case 2:
+                //#switch(JSU.toString(method))
+                case "regexp": return new JSRegexp(args[0], args[1]);
+                //#end
+                break;
+            case 3:
+                //#switch(JSU.toString(method))
+                case "ui.font.height":
+                    try { return JSU.N(Font.getFont(args[0], 
Text.jsToPointsize(args[1])).textheight(JSU.toString(args[2]))); }
+                    catch (Exception e) { throw new JSExn("called 
vexi.ui.font.height with illegal arguments"); }
+                case "ui.font.wait": throw new Error("FIXME: vexi.ui.font.wait 
not implemented");
+                case "ui.font.width":
+                    try { return JSU.N(Font.getFont(args[0], 
Text.jsToPointsize(args[1])).textwidth(JSU.toString(args[2]))); }
+                    catch (Exception e) { throw new JSExn("called 
vexi.ui.font.width with illegal arguments"); }
+                //#end
+                break;
             }
         } catch (RuntimeException e) {
             // FIXME: maybe JSExn should take a second argument, Exception


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

------------------------------------------------------------------------------
Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT
is a gathering of tech-side developers & brand creativity professionals. Meet
the minds behind Google Creative Lab, Visual Complexity, Processing, & 
iPhoneDevCamp asthey present alongside digital heavyweights like Barbarian
Group, R/GA, & Big Spaceship. http://www.creativitycat.com 
_______________________________________________
Vexi-svn mailing list
Vexi-svn@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/vexi-svn

Reply via email to