From 52ffc2a48fc74d013ae7fa401d9d0d405543c38e Mon Sep 17 00:00:00 2001 From: brian Date: Fri, 30 Jan 2004 07:02:23 +0000 Subject: [PATCH] 2003/06/26 01:53:37 darcs-hash:20040130070223-aa32f-c94f6d23b99c7b1014902d12d729f820a266fc58.gz --- src/org/xwt/Template.java | 1 + src/org/xwt/XMLRPC.java | 4 ++-- src/org/xwt/js/ArrayImpl.java | 13 +++++++++++ src/org/xwt/js/CompiledFunctionImpl.java | 35 +++++++++++++++++++++++++++++- src/org/xwt/js/JS.java | 15 ++++++++++--- src/org/xwt/js/Lexer.java | 8 ++++++- src/org/xwt/js/Parser.java | 2 +- 7 files changed, 70 insertions(+), 8 deletions(-) diff --git a/src/org/xwt/Template.java b/src/org/xwt/Template.java index c1a2532..6ee6f0b 100644 --- a/src/org/xwt/Template.java +++ b/src/org/xwt/Template.java @@ -488,6 +488,7 @@ public class Template { if (t.redirect != null) throw new XML.SchemaException("the header element may not appear more than once"); t.redirect = c.vals[0].toString(); + if(t.redirect.equals("null")) t.redirect = null; return; } else if (c.localName.equals("preapply")) { diff --git a/src/org/xwt/XMLRPC.java b/src/org/xwt/XMLRPC.java index 282d9ef..c4f5fc6 100644 --- a/src/org/xwt/XMLRPC.java +++ b/src/org/xwt/XMLRPC.java @@ -386,8 +386,8 @@ class XMLRPC extends JS.Callable { } /** When you get a property from an XMLRPC, it just returns another XMLRPC with the property name tacked onto methodname. */ - public Object get(String name) { - return new XMLRPC(url, (methodname.equals("") ? "" : methodname + ".") + name, http); + public Object get(Object name) { + return new XMLRPC(url, (methodname.equals("") ? "" : methodname + ".") + name.toString(), http); } public XMLRPC(String url, String methodname) { diff --git a/src/org/xwt/js/ArrayImpl.java b/src/org/xwt/js/ArrayImpl.java index 40bc873..ab63633 100644 --- a/src/org/xwt/js/ArrayImpl.java +++ b/src/org/xwt/js/ArrayImpl.java @@ -29,6 +29,19 @@ class ArrayImpl extends JS.Obj { if (key.equals("cascade")) return org.xwt.Trap.cascadeFunction; if (key.equals("trapee")) return org.xwt.Trap.currentTrapee(); if (key.equals("length")) return new Long(vec.size()); + if (key.equals("push")) return new JS.Callable() { + public Object call(JS.Array args) { + for(int i=0;i 1) limit = JS.toNumber(args.elementAt(1)).intValue(); + else limit = 0; + if(args.length() > 0) sep = args.elementAt(0).toString(); + else sep = null; + + seplen = sep!=null ? sep.length() : 0; + + // special case sep == null, split up chars + if(seplen == 0) { + ret = new JS.Array(o.length()); + for(int i=0;i