From a1e6b7e9307319c0195b0efbe5e5354c128be481 Mon Sep 17 00:00:00 2001 From: adam Date: Fri, 7 Jan 2005 04:04:02 +0000 Subject: [PATCH] renamed Script to JSU darcs-hash:20050107040402-5007d-42d23a4ebcfbe5753cdd2f4a9847536f046d0451.gz --- src/org/ibex/js/Directory.java | 10 +-- src/org/ibex/js/Interpreter.java | 106 +++++++++++++------------- src/org/ibex/js/JS.java | 10 +-- src/org/ibex/js/JSArray.java | 40 +++++----- src/org/ibex/js/JSDate.java | 112 +++++++++++++-------------- src/org/ibex/js/JSExn.java | 6 +- src/org/ibex/js/JSFunction.java | 2 +- src/org/ibex/js/JSMath.java | 60 +++++++-------- src/org/ibex/js/JSPrimitive.java | 62 +++++++-------- src/org/ibex/js/JSReflection.java | 16 ++-- src/org/ibex/js/JSRegexp.java | 94 +++++++++++------------ src/org/ibex/js/JSScope.java | 4 +- src/org/ibex/js/{Script.java => JSU.java} | 2 +- src/org/ibex/js/Parser.java | 118 ++++++++++++++--------------- src/org/ibex/js/SOAP.java | 10 +-- src/org/ibex/js/Test.java | 48 ++++++------ src/org/ibex/js/XMLRPC.java | 8 +- 17 files changed, 354 insertions(+), 354 deletions(-) rename src/org/ibex/js/{Script.java => JSU.java} (99%) diff --git a/src/org/ibex/js/Directory.java b/src/org/ibex/js/Directory.java index 0c0fc73..9bcc7f6 100644 --- a/src/org/ibex/js/Directory.java +++ b/src/org/ibex/js/Directory.java @@ -65,14 +65,14 @@ public class Directory extends JS.Immutable { public void put(JS key0, JS val) throws JSExn { try { if (key0 == null) return; - String key = Script.toString(key0); + String key = JSU.toString(key0); File f2 = new File(f.getAbsolutePath() + File.separatorChar + Encode.toFilename(key)); destroy(f2); if (val == null) return; if (val instanceof JSPrimitive) { OutputStream out = new FileOutputStream(f2); Writer w = new OutputStreamWriter(out); - w.write(Script.toString(val)); + w.write(JSU.toString(val)); w.flush(); out.close(); } else { @@ -92,7 +92,7 @@ public class Directory extends JS.Immutable { public JS get(JS key0) throws JSExn { try { if (key0 == null) return null; - String key = Script.toString(key0); + String key = JSU.toString(key0); File f2 = new File(f.getAbsolutePath() + File.separatorChar + Encode.toFilename(key)); if (!f2.exists()) return null; if (f2.isDirectory()) return new Directory(f2); @@ -101,7 +101,7 @@ public class Directory extends JS.Immutable { Reader r = new InputStreamReader(new FileInputStream(f2)); while(true) { int numread = r.read(chars, numchars, chars.length - numchars); - if (numread == -1) return Script.S(new String(chars, 0, numchars)); + if (numread == -1) return JSU.S(new String(chars, 0, numchars)); numchars += numread; } } catch (IOException ioe) { @@ -114,7 +114,7 @@ public class Directory extends JS.Immutable { return new JS.Enumeration(null) { int i = 0; public boolean _hasNext() { return i < elements.length; } - public JS _next() { return Script.S(Encode.fromFilename(elements[i++])); } + public JS _next() { return JSU.S(Encode.fromFilename(elements[i++])); } }; } } diff --git a/src/org/ibex/js/Interpreter.java b/src/org/ibex/js/Interpreter.java index b0eb602..693ad9c 100644 --- a/src/org/ibex/js/Interpreter.java +++ b/src/org/ibex/js/Interpreter.java @@ -107,16 +107,16 @@ class Interpreter implements ByteCodes, Tokens, Pausable { switch(op) { case LITERAL: stack.push((JS)arg); break; case OBJECT: stack.push(new JS.Obj()); break; - case ARRAY: stack.push(new JSArray(Script.toInt((JS)arg))); break; + case ARRAY: stack.push(new JSArray(JSU.toInt((JS)arg))); break; //case DECLARE: scope.declare((JS)(arg==null ? stack.peek() : arg)); if(arg != null) stack.push((JS)arg); break; - case JT: if (Script.toBoolean((JS)stack.pop())) pc += Script.toInt((JS)arg) - 1; break; - case JF: if (!Script.toBoolean((JS)stack.pop())) pc += Script.toInt((JS)arg) - 1; break; - case JMP: pc += Script.toInt((JS)arg) - 1; break; + case JT: if (JSU.toBoolean((JS)stack.pop())) pc += JSU.toInt((JS)arg) - 1; break; + case JF: if (!JSU.toBoolean((JS)stack.pop())) pc += JSU.toInt((JS)arg) - 1; break; + case JMP: pc += JSU.toInt((JS)arg) - 1; break; case POP: stack.pop(); break; case SWAP: stack.swap(); break; case DUP: stack.push(stack.peek()); break; case NEWSCOPE: { - int n = Script.toInt((JS)arg); + int n = JSU.toInt((JS)arg); scope = new JSScope(scope,(n>>>16)&0xffff,(n>>>0)&0xffff); break; } @@ -124,19 +124,19 @@ class Interpreter implements ByteCodes, Tokens, Pausable { case GLOBALSCOPE: stack.push(scope.getGlobal()); break; case SCOPEGET: stack.push(scope.get((JS)arg)); break; case SCOPEPUT: scope.put((JS)arg, (JS)stack.peek()); break; - case ASSERT: if (!Script.toBoolean((JS)stack.pop())) throw je("ibex.assertion.failed"); break; - case BITNOT: stack.push(Script.N(~Script.toLong((JS)stack.pop()))); break; - case BANG: stack.push(Script.B(!Script.toBoolean((JS)stack.pop()))); break; + case ASSERT: if (!JSU.toBoolean((JS)stack.pop())) throw je("ibex.assertion.failed"); break; + case BITNOT: stack.push(JSU.N(~JSU.toLong((JS)stack.pop()))); break; + case BANG: stack.push(JSU.B(!JSU.toBoolean((JS)stack.pop()))); break; case NEWFUNCTION: stack.push(((JSFunction)arg)._cloneWithNewParentScope(scope)); break; case LABEL: break; case TYPEOF: { Object o = stack.pop(); if (o == null) stack.push(null); - else if (o instanceof JSString) stack.push(Script.S("string")); - else if (o instanceof JSNumber.B) stack.push(Script.S("boolean")); - else if (o instanceof JSNumber) stack.push(Script.S("number")); - else stack.push(Script.S("object")); + else if (o instanceof JSString) stack.push(JSU.S("string")); + else if (o instanceof JSNumber.B) stack.push(JSU.S("boolean")); + else if (o instanceof JSNumber) stack.push(JSU.S("number")); + else stack.push(JSU.S("object")); break; } @@ -148,7 +148,7 @@ class Interpreter implements ByteCodes, Tokens, Pausable { case LOOP: stack.push(new LoopMarker(pc, (String)(pc > 0 && f.op[pc - 1] == LABEL ? f.arg[pc - 1] : null), scope)); - stack.push(Script.T); + stack.push(JSU.T); break; case BREAK: @@ -166,9 +166,9 @@ class Interpreter implements ByteCodes, Tokens, Pausable { if (o instanceof LoopMarker) { if (arg == null || arg.equals(((LoopMarker)o).label)) { int loopInstructionLocation = ((LoopMarker)o).location; - int endOfLoop = Script.toInt((JS)f.arg[loopInstructionLocation]) + loopInstructionLocation; + int endOfLoop = JSU.toInt((JS)f.arg[loopInstructionLocation]) + loopInstructionLocation; scope = ((LoopMarker)o).scope; - if (op == CONTINUE) { stack.push(o); stack.push(Script.F); } + if (op == CONTINUE) { stack.push(o); stack.push(JSU.F); } pc = op == BREAK ? endOfLoop - 1 : loopInstructionLocation; continue OUTER; } @@ -200,7 +200,7 @@ class Interpreter implements ByteCodes, Tokens, Pausable { boolean didTrapPut = false; if (o instanceof TrapMarker) { // handles return component of a write trap TrapMarker tm = (TrapMarker) o; - boolean cascade = tm.t.isWriteTrap() && !tm.cascadeHappened && !Script.toBoolean(retval); + boolean cascade = tm.t.isWriteTrap() && !tm.cascadeHappened && !JSU.toBoolean(retval); if(cascade) { JS.Trap t = tm.t.nextWrite(); if(t == null && tm.t.target() instanceof JS.Clone) { @@ -236,7 +236,7 @@ class Interpreter implements ByteCodes, Tokens, Pausable { } case CASCADE: { - boolean write = Script.toBoolean((JS)arg); + boolean write = JSU.toBoolean((JS)arg); JS val = write ? (JS)stack.pop() : null; CallMarker o = stack.findCall(); if(!(o instanceof TrapMarker)) throw new JSExn("tried to CASCADE while not in a trap"); @@ -276,8 +276,8 @@ class Interpreter implements ByteCodes, Tokens, Pausable { JS val = (JS)stack.pop(); JS key = (JS)stack.pop(); JS target = (JS)stack.peek(); - if (target == null) throw je("tried to put " + Script.str(val) + " to the " + Script.str(key) + " property on the null value"); - if (key == null) throw je("tried to assign \"" + Script.str(val) + "\" to the null key"); + if (target == null) throw je("tried to put " + JSU.str(val) + " to the " + JSU.str(key) + " property on the null value"); + if (key == null) throw je("tried to assign \"" + JSU.str(val) + "\" to the null key"); JS.Trap t = target.getTrap(key); if(t != null) t = t.write(); @@ -312,8 +312,8 @@ class Interpreter implements ByteCodes, Tokens, Pausable { stack.push(key); } JS ret = null; - if (key == null) throw je("tried to get the null key from " + Script.str(target)); - if (target == null) throw je("tried to get property \"" + Script.str(key) + "\" from the null object"); + if (key == null) throw je("tried to get the null key from " + JSU.str(target)); + if (target == null) throw je("tried to get property \"" + JSU.str(key) + "\" from the null object"); JS.Trap t = target.getTrap(key); if(t != null) t = t.read(); @@ -354,7 +354,7 @@ class Interpreter implements ByteCodes, Tokens, Pausable { if (object == null) { method = (JS)stack.pop(); object = (JS)stack.pop(); - throw new JSExn("function '"+Script.str(method)+"' not found in " + object.getClass().getName()); + throw new JSExn("function '"+JSU.str(method)+"' not found in " + object.getClass().getName()); } else if (object instanceof JS.Method) { method = (JS)stack.pop(); object = (JS)stack.pop(); @@ -427,13 +427,13 @@ class Interpreter implements ByteCodes, Tokens, Pausable { JS left = (JS)stack.pop(); JS ret; if(left instanceof JSString || right instanceof JSString) - ret = Script.S(Script.toString(left).concat(Script.toString(right))); + ret = JSU.S(JSU.toString(left).concat(JSU.toString(right))); else if(left instanceof JSNumber.D || right instanceof JSNumber.D) - ret = Script.N(Script.toDouble(left) + Script.toDouble(right)); + ret = JSU.N(JSU.toDouble(left) + JSU.toDouble(right)); else { - long l = Script.toLong(left) + Script.toLong(right); - if(l < Integer.MIN_VALUE || l > Integer.MAX_VALUE) ret = Script.N(l); - ret = Script.N((int)l); + long l = JSU.toLong(left) + JSU.toLong(right); + if(l < Integer.MIN_VALUE || l > Integer.MAX_VALUE) ret = JSU.N(l); + ret = JSU.N((int)l); } stack.push(ret); } else { @@ -441,27 +441,27 @@ class Interpreter implements ByteCodes, Tokens, Pausable { while(--count >= 0) args[count] = (JS)stack.pop(); if(args[0] instanceof JSString) { StringBuffer sb = new StringBuffer(64); - for(int i=0;i> Script.toLong(right))); break; - case URSH: stack.push(Script.N(Script.toLong(left) >>> Script.toLong(right))); break; + case LSH: stack.push(JSU.N(JSU.toLong(left) << JSU.toLong(right))); break; + case RSH: stack.push(JSU.N(JSU.toLong(left) >> JSU.toLong(right))); break; + case URSH: stack.push(JSU.N(JSU.toLong(left) >>> JSU.toLong(right))); break; //#repeat />= LT/LE/GT/GE case LT: { if(left instanceof JSString && right instanceof JSString) - stack.push(Script.B(Script.toString(left).compareTo(Script.toString(right)) < 0)); + stack.push(JSU.B(JSU.toString(left).compareTo(JSU.toString(right)) < 0)); else - stack.push(Script.B(Script.toDouble(left) < Script.toDouble(right))); + stack.push(JSU.B(JSU.toDouble(left) < JSU.toDouble(right))); } //#end @@ -501,7 +501,7 @@ class Interpreter implements ByteCodes, Tokens, Pausable { if(left == null && right == null) ret = true; else if(left == null || right == null) ret = false; else ret = left.equals(right); - stack.push(Script.B(op == EQ ? ret : !ret)); break; + stack.push(JSU.B(op == EQ ? ret : !ret)); break; } default: throw new Error("unknown opcode " + op); @@ -626,12 +626,12 @@ class Interpreter implements ByteCodes, Tokens, Pausable { private JS val; public TrapArgs(Trap t, JS val) { this.t = t; this.val = val; } public JS get(JS key) throws JSExn { - if(Script.isInt(key) && Script.toInt(key) == 0) return val; - //#switch(Script.str(key)) + if(JSU.isInt(key) && JSU.toInt(key) == 0) return val; + //#switch(JSU.str(key)) case "trapee": return t.target(); case "callee": return t.function(); case "trapname": return t.key(); - case "length": return t.isWriteTrap() ? Script.ONE : Script.ZERO; + case "length": return t.isWriteTrap() ? JSU.ONE : JSU.ZERO; //#end return super.get(key); } @@ -677,7 +677,7 @@ class Interpreter implements ByteCodes, Tokens, Pausable { if(cm.f == null) break; String s = cm.f.sourceName + ":" + cm.f.line[cm.pc-1]; if(cm instanceof Interpreter.TrapMarker) - s += " (trap on " + Script.str(((Interpreter.TrapMarker)cm).t.key()) + ")"; + s += " (trap on " + JSU.str(((Interpreter.TrapMarker)cm).t.key()) + ")"; e.addBacktrace(s); } } diff --git a/src/org/ibex/js/JS.java b/src/org/ibex/js/JS.java index a6e64a9..096e8f9 100644 --- a/src/org/ibex/js/JS.java +++ b/src/org/ibex/js/JS.java @@ -101,11 +101,11 @@ public interface JS extends Pausable { public JS call(JS[] args) throws JSExn { throw new JSExn( "object cannot be called, class ["+ getClass().getName() +"]"); } public JS call(JS method, JS[] args) throws JSExn { throw new JSExn( - "method not found: " + Script.str(method)); } + "method not found: " + JSU.str(method)); } public String[] getFormalArgs() { return emptystr; } public void declare(JS key) throws JSExn { throw new JSExn( - "object cannot declare key: "+ Script.str(key)); } + "object cannot declare key: "+ JSU.str(key)); } public void undeclare(JS key) throws JSExn { } // FIXME throw error? public JS putAndTriggerTraps(JS key, JS val) throws JSExn { throw new JSExn( @@ -193,7 +193,7 @@ public interface JS extends Pausable { public JS call(JS[] args) throws JSExn { throw new JSExn( "object cannot be called, class ["+ getClass().getName() +"]"); } public JS call(JS method, JS[] args) throws JSExn { throw new JSExn( - "method not found: " + Script.str(method)); } + "method not found: " + JSU.str(method)); } public String[] getFormalArgs() { return emptystr; } public Enumeration keys() throws JSExn { @@ -339,8 +339,8 @@ public interface JS extends Pausable { } public JS get(JS key) throws JSExn { - //#switch(Script.str(key)) - case "hasNext": return Script.B(hasNext()); + //#switch(JSU.str(key)) + case "hasNext": return JSU.B(hasNext()); case "next": return next(); //#end return super.get(key); diff --git a/src/org/ibex/js/JSArray.java b/src/org/ibex/js/JSArray.java index ae2478f..8e2fdd2 100644 --- a/src/org/ibex/js/JSArray.java +++ b/src/org/ibex/js/JSArray.java @@ -22,12 +22,12 @@ class JSArray extends Basket.Array implements JS, Basket.CompareFunc { return new Enumeration(null) { private int n = 0; public boolean _hasNext() { return n < size(); } - public JS _next() { return Script.N(n++); } + public JS _next() { return JSU.N(n++); } }; } public JS get(JS key) throws JSExn { if (key == null || !(key instanceof JSNumber.I)) { - //#switch(Script.str(key)) + //#switch(JSU.str(key)) case "pop": return METHOD; case "reverse": return METHOD; case "toString": return METHOD; @@ -38,17 +38,17 @@ class JSArray extends Basket.Array implements JS, Basket.CompareFunc { case "push": return METHOD; case "unshift": return METHOD; case "splice": return METHOD; - case "length": return Script.N(size()); + case "length": return JSU.N(size()); //#end - throw new JSExn("arrays only support positive integer keys, can not use: "+Script.str(key)); + throw new JSExn("arrays only support positive integer keys, can not use: "+JSU.str(key)); } return (JS)get(((JSNumber.I)key).toInt()); } public void put(JS key, JS val) throws JSExn { - if (Script.str(key).equals("length")) { setSize(Script.toInt(val)); } + if (JSU.str(key).equals("length")) { setSize(JSU.toInt(val)); } if (key == null || !(key instanceof JSNumber.I)) throw new JSExn( - "arrays only support positive integer keys, can not use: "+Script.str(key)); + "arrays only support positive integer keys, can not use: "+JSU.str(key)); int i = ((JSNumber.I)key).toInt(); if (i < 0) throw new JSExn("arrays can not use negative integer keys "+i); size(i + 1); while (size() < i) add(null); @@ -69,25 +69,25 @@ class JSArray extends Basket.Array implements JS, Basket.CompareFunc { public void pause() throws NotPausableException { throw new NotPausableException(); } public JS call(JS[] args) throws JSExn { throw new JSExn("can not call an array as a function"); } public JS call(JS method, JS[] args) throws JSExn { - //#switch(Script.str(method)) + //#switch(JSU.str(method)) case "pop": return size() == 0 ? null : (JS)remove(size() - 1); - case "push": addAll(args); return Script.N(size()); + case "push": addAll(args); return JSU.N(size()); case "reverse": reverse(); return this; case "toString": return join(","); case "shift": return size() == 0 ? null : (JS)remove(0); - case "join": return join(args.length == 0 ? "," : Script.str(args[0])); + case "join": return join(args.length == 0 ? "," : JSU.str(args[0])); case "sort": return sort(args.length == 0 ? null : args[0]); case "slice": - int start = Script.toInt(args.length < 1 ? null : args[0]); - int end = args.length < 2 ? size() : Script.toInt(args[1]); + int start = JSU.toInt(args.length < 1 ? null : args[0]); + int end = args.length < 2 ? size() : JSU.toInt(args[1]); return slice(start, end); case "unshift": for (int i=0; i < args.length; i++) add(i, args[i]); - return Script.N(size()); + return JSU.N(size()); case "splice": return splice(args); //#end - throw new JSExn("arrays have no function: "+Script.str(method)); + throw new JSExn("arrays have no function: "+JSU.str(method)); } public JS putAndTriggerTraps(JS key, JS val) throws JSExn { put(key, val); return val; } @@ -112,16 +112,16 @@ class JSArray extends Basket.Array implements JS, Basket.CompareFunc { private JS join(String sep) throws JSExn { int length = size(); - if(length == 0) return Script.S(""); + if(length == 0) return JSU.S(""); StringBuffer sb = new StringBuffer(64); int i=0; while(true) { JS o = (JS)get(i); - if(o != null) sb.append(Script.toString(o)); + if(o != null) sb.append(JSU.toString(o)); if(++i == length) break; sb.append(sep); } - return Script.S(sb.toString()); + return JSU.S(sb.toString()); } private JS slice(int start, int end) { @@ -140,8 +140,8 @@ class JSArray extends Basket.Array implements JS, Basket.CompareFunc { private JS splice(JS[] args) throws JSExn { int oldLength = size(); - int start = Script.toInt(args.length < 1 ? null : args[0]); - int deleteCount = Script.toInt(args.length < 2 ? null : args[1]); + int start = JSU.toInt(args.length < 1 ? null : args[0]); + int deleteCount = JSU.toInt(args.length < 2 ? null : args[1]); int newCount = args.length - 2; if(newCount < 0) newCount = 0; if(start < 0) start = oldLength+start; @@ -170,7 +170,7 @@ class JSArray extends Basket.Array implements JS, Basket.CompareFunc { private static final Basket.CompareFunc defaultSort = new Basket.CompareFunc() { public int compare(Object a, Object b) { - try { return Script.toString((JS)a).compareTo(Script.toString((JS)b)); } + try { return JSU.toString((JS)a).compareTo(JSU.toString((JS)b)); } catch (JSExn e) { throw new JSExn.Wrapper(e); } } }; @@ -188,7 +188,7 @@ class JSArray extends Basket.Array implements JS, Basket.CompareFunc { public int compare(Object a, Object b) throws JSExn.Wrapper { try { sortargs[0] = (JS)a; sortargs[1] = (JS)b; - return Script.toInt(sort.call(sortargs)); + return JSU.toInt(sort.call(sortargs)); } catch (JSExn e) { throw new JSExn.Wrapper(e); } finally { sortargs[0] = null; sortargs[1] = null; } } diff --git a/src/org/ibex/js/JSDate.java b/src/org/ibex/js/JSDate.java index 5e5eaaf..19e4fc6 100644 --- a/src/org/ibex/js/JSDate.java +++ b/src/org/ibex/js/JSDate.java @@ -61,60 +61,60 @@ public class JSDate extends JS.Immutable { public JS call(JS method, JS[] args) throws JSExn { switch(args.length) { case 0: { - //#switch(Script.toString(method)) - case "toString": return Script.S(date_format(date, FORMATSPEC_FULL)); - case "toTimeString": return Script.S(date_format(date, FORMATSPEC_TIME)); - case "toDateString": return Script.S(date_format(date, FORMATSPEC_DATE)); - case "toLocaleString": return Script.S(toLocaleString(date)); - case "toLocaleTimeString": return Script.S(toLocaleTimeString(date)); - case "toLocaleDateString": return Script.S(toLocaleDateString(date)); - case "toUTCString": return Script.S(toUTCString(date)); - case "valueOf": return Script.N(this.date); - case "getTime": return Script.N(this.date); - case "getYear": return Script.N(getYear(date)); - case "getFullYear": return Script.N(YearFromTime(LocalTime(date))); - case "getUTCFullYear": return Script.N(YearFromTime(date)); - case "getMonth": return Script.N(MonthFromTime(LocalTime(date))); - case "getUTCMonth": return Script.N(MonthFromTime(date)); - case "getDate": return Script.N(DateFromTime(LocalTime(date))); - case "getUTCDate": return Script.N(DateFromTime(date)); - case "getDay": return Script.N(WeekDay(LocalTime(date))); - case "getUTCDay": return Script.N(WeekDay(date)); - case "getHours": return Script.N(HourFromTime(LocalTime(date))); - case "getUTCHours": return Script.N(HourFromTime(date)); - case "getMinutes": return Script.N(MinFromTime(LocalTime(date))); - case "getUTCMinutes": return Script.N(MinFromTime(date)); - case "getSeconds": return Script.N(SecFromTime(LocalTime(date))); - case "getUTCSeconds": return Script.N(SecFromTime(date)); - case "getMilliseconds": return Script.N(msFromTime(LocalTime(date))); - case "getUTCMilliseconds": return Script.N(msFromTime(date)); - case "getTimezoneOffset": return Script.N(getTimezoneOffset(date)); + //#switch(JSU.toString(method)) + case "toString": return JSU.S(date_format(date, FORMATSPEC_FULL)); + case "toTimeString": return JSU.S(date_format(date, FORMATSPEC_TIME)); + case "toDateString": return JSU.S(date_format(date, FORMATSPEC_DATE)); + case "toLocaleString": return JSU.S(toLocaleString(date)); + case "toLocaleTimeString": return JSU.S(toLocaleTimeString(date)); + case "toLocaleDateString": return JSU.S(toLocaleDateString(date)); + case "toUTCString": return JSU.S(toUTCString(date)); + case "valueOf": return JSU.N(this.date); + case "getTime": return JSU.N(this.date); + case "getYear": return JSU.N(getYear(date)); + case "getFullYear": return JSU.N(YearFromTime(LocalTime(date))); + case "getUTCFullYear": return JSU.N(YearFromTime(date)); + case "getMonth": return JSU.N(MonthFromTime(LocalTime(date))); + case "getUTCMonth": return JSU.N(MonthFromTime(date)); + case "getDate": return JSU.N(DateFromTime(LocalTime(date))); + case "getUTCDate": return JSU.N(DateFromTime(date)); + case "getDay": return JSU.N(WeekDay(LocalTime(date))); + case "getUTCDay": return JSU.N(WeekDay(date)); + case "getHours": return JSU.N(HourFromTime(LocalTime(date))); + case "getUTCHours": return JSU.N(HourFromTime(date)); + case "getMinutes": return JSU.N(MinFromTime(LocalTime(date))); + case "getUTCMinutes": return JSU.N(MinFromTime(date)); + case "getSeconds": return JSU.N(SecFromTime(LocalTime(date))); + case "getUTCSeconds": return JSU.N(SecFromTime(date)); + case "getMilliseconds": return JSU.N(msFromTime(LocalTime(date))); + case "getUTCMilliseconds": return JSU.N(msFromTime(date)); + case "getTimezoneOffset": return JSU.N(getTimezoneOffset(date)); //#end return super.call(method, args); } case 1: { - //#switch(Script.toString(method)) - case "setTime": return Script.N(this.setTime(Script.toDouble(args[0]))); - case "setYear": return Script.N(this.setYear(Script.toDouble(args[0]))); + //#switch(JSU.toString(method)) + case "setTime": return JSU.N(this.setTime(JSU.toDouble(args[0]))); + case "setYear": return JSU.N(this.setYear(JSU.toDouble(args[0]))); //#end // fall through } default: { - //#switch(Script.toString(method)) - case "setMilliseconds": return Script.N(this.makeTime(args, 1, true)); - case "setUTCMilliseconds": return Script.N(this.makeTime(args, 1, false)); - case "setSeconds": return Script.N(this.makeTime(args, 2, true)); - case "setUTCSeconds": return Script.N(this.makeTime(args, 2, false)); - case "setMinutes": return Script.N(this.makeTime(args, 3, true)); - case "setUTCMinutes": return Script.N(this.makeTime(args, 3, false)); - case "setHours": return Script.N(this.makeTime(args, 4, true)); - case "setUTCHours": return Script.N(this.makeTime(args, 4, false)); - case "setDate": return Script.N(this.makeDate(args, 1, true)); - case "setUTCDate": return Script.N(this.makeDate(args, 1, false)); - case "setMonth": return Script.N(this.makeDate(args, 2, true)); - case "setUTCMonth": return Script.N(this.makeDate(args, 2, false)); - case "setFullYear": return Script.N(this.makeDate(args, 3, true)); - case "setUTCFullYear": return Script.N(this.makeDate(args, 3, false)); + //#switch(JSU.toString(method)) + case "setMilliseconds": return JSU.N(this.makeTime(args, 1, true)); + case "setUTCMilliseconds": return JSU.N(this.makeTime(args, 1, false)); + case "setSeconds": return JSU.N(this.makeTime(args, 2, true)); + case "setUTCSeconds": return JSU.N(this.makeTime(args, 2, false)); + case "setMinutes": return JSU.N(this.makeTime(args, 3, true)); + case "setUTCMinutes": return JSU.N(this.makeTime(args, 3, false)); + case "setHours": return JSU.N(this.makeTime(args, 4, true)); + case "setUTCHours": return JSU.N(this.makeTime(args, 4, false)); + case "setDate": return JSU.N(this.makeDate(args, 1, true)); + case "setUTCDate": return JSU.N(this.makeDate(args, 1, false)); + case "setMonth": return JSU.N(this.makeDate(args, 2, true)); + case "setUTCMonth": return JSU.N(this.makeDate(args, 2, false)); + case "setFullYear": return JSU.N(this.makeDate(args, 3, true)); + case "setUTCFullYear": return JSU.N(this.makeDate(args, 3, false)); //#end } } @@ -122,7 +122,7 @@ public class JSDate extends JS.Immutable { } public JS get(JS key) throws JSExn { - //#switch(Script.toString(key)) + //#switch(JSU.toString(key)) case "toString": return METHOD; case "toTimeString": return METHOD; case "toDateString": return METHOD; @@ -538,7 +538,7 @@ public class JSDate extends JS.Immutable { if (d != d || Double.isInfinite(d)) { return Double.NaN; } - array[loop] = Script.toDouble(args[loop]); + array[loop] = JSU.toDouble(args[loop]); } else { array[loop] = 0; } @@ -557,7 +557,7 @@ public class JSDate extends JS.Immutable { array[3], array[4], array[5], array[6]); d = TimeClip(d); return d; - // return Script.N(d); + // return JSU.N(d); } /* @@ -887,8 +887,8 @@ public class JSDate extends JS.Immutable { return result.toString(); } - private static double _toNumber(JS o) throws JSExn { return Script.toDouble(o); } - private static double _toNumber(JS[] o, int index) throws JSExn { return Script.toDouble(o[index]); } + private static double _toNumber(JS o) throws JSExn { return JSU.toDouble(o); } + private static double _toNumber(JS[] o, int index) throws JSExn { return JSU.toDouble(o[index]); } public JSDate(JS[] args) throws JSExn { @@ -900,8 +900,8 @@ public class JSDate extends JS.Immutable { } case 1: { double date; - if(Script.isString(args[0])) - date = date_parseString(Script.toString(args[0])); + if(JSU.isString(args[0])) + date = date_parseString(JSU.toString(args[0])); else date = _toNumber(args[0]); obj.date = TimeClip(date); @@ -910,9 +910,9 @@ public class JSDate extends JS.Immutable { default: { // multiple arguments; year, month, day etc. double array[] = new double[MAXARGS]; - array[0] = Script.toDouble(args[0]); - array[1] = Script.toDouble(args[1]); - if (args.length >= 2) array[2] = Script.toDouble(args[2]); + array[0] = JSU.toDouble(args[0]); + array[1] = JSU.toDouble(args[1]); + if (args.length >= 2) array[2] = JSU.toDouble(args[2]); for (int i=0; i < args.length; i++) { double d = _toNumber(args[i]); if (d != d || Double.isInfinite(d)) { diff --git a/src/org/ibex/js/JSExn.java b/src/org/ibex/js/JSExn.java index 3880858..af72ce4 100644 --- a/src/org/ibex/js/JSExn.java +++ b/src/org/ibex/js/JSExn.java @@ -11,7 +11,7 @@ import java.io.*; public class JSExn extends Exception { private Basket.List backtrace = new Basket.Array(); private JS js; - public JSExn(String s) { this(Script.S(s)); } + public JSExn(String s) { this(JSU.S(s)); } public JSExn(JS js) { this(js,null); } public JSExn(JS js, Interpreter cx) { this.js = js; fill(cx); } @@ -30,7 +30,7 @@ public class JSExn extends Exception { for(int i=0; i= 1 ? Script.toInt(args[0]) : 0; - int b = args.length >= 2 ? Script.toInt(args[1]) : slength; + int a = args.length >= 1 ? JSU.toInt(args[0]) : 0; + int b = args.length >= 2 ? JSU.toInt(args[1]) : slength; if (a > slength) a = slength; if (b > slength) b = slength; if (a < 0) a = 0; if (b < 0) b = 0; if (a > b) { int tmp = a; a = b; b = tmp; } - return Script.S(s.substring(a,b)); + return JSU.S(s.substring(a,b)); } case "substr": { - int start = args.length >= 1 ? Script.toInt(args[0]) : 0; - int len = args.length >= 2 ? Script.toInt(args[1]) : Integer.MAX_VALUE; + int start = args.length >= 1 ? JSU.toInt(args[0]) : 0; + int len = args.length >= 2 ? JSU.toInt(args[1]) : Integer.MAX_VALUE; if (start < 0) start = slength + start; if (start < 0) start = 0; if (len < 0) len = 0; if (len > slength - start) len = slength - start; - if (len <= 0) return Script.S(""); - return Script.S(s.substring(start,start+len)); + if (len <= 0) return JSU.S(""); + return JSU.S(s.substring(start,start+len)); } case "charAt": { - int p = args.length >= 1 ? Script.toInt(args[0]) : 0; - if (p < 0 || p >= slength) return Script.S(""); - return Script.S(s.substring(p,p+1)); + int p = args.length >= 1 ? JSU.toInt(args[0]) : 0; + if (p < 0 || p >= slength) return JSU.S(""); + return JSU.S(s.substring(p,p+1)); } case "charCodeAt": { - int p = args.length >= 1 ? Script.toInt(args[0]) : 0; - if (p < 0 || p >= slength) return Script.N(Double.NaN); - return Script.N(s.charAt(p)); + int p = args.length >= 1 ? JSU.toInt(args[0]) : 0; + if (p < 0 || p >= slength) return JSU.N(Double.NaN); + return JSU.N(s.charAt(p)); } case "concat": { StringBuffer sb = new StringBuffer(slength*2).append(s); for (int i=0; i < args.length; i++) sb.append(args[i]); - return Script.S(sb.toString()); + return JSU.S(sb.toString()); } case "indexOf": { - String search = args.length >= 1 ? Script.toString(args[0]) : "null"; - int start = args.length >= 2 ? Script.toInt(args[1]) : 0; + String search = args.length >= 1 ? JSU.toString(args[0]) : "null"; + int start = args.length >= 2 ? JSU.toInt(args[1]) : 0; // Java's indexOf handles an out of bounds start index, it'll return -1 - return Script.N(s.indexOf(search,start)); + return JSU.N(s.indexOf(search,start)); } case "lastIndexOf": { - String search = args.length >= 1 ? Script.toString(args[0]) : "null"; - int start = args.length >= 2 ? Script.toInt(args[1]) : 0; + String search = args.length >= 1 ? JSU.toString(args[0]) : "null"; + int start = args.length >= 2 ? JSU.toInt(args[1]) : 0; // Java's indexOf handles an out of bounds start index, it'll return -1 - return Script.N(s.lastIndexOf(search,start)); + return JSU.N(s.lastIndexOf(search,start)); } case "match": return JSRegexp.stringMatch(this,args[0]); case "replace": return JSRegexp.stringReplace(this,args[0],args[1]); case "search": return JSRegexp.stringSearch(this,args[0]); case "split": return JSRegexp.stringSplit(this,args[0],args[1],args.length); - case "toLowerCase": return Script.S(s.toLowerCase()); - case "toUpperCase": return Script.S(s.toUpperCase()); + case "toLowerCase": return JSU.S(s.toLowerCase()); + case "toUpperCase": return JSU.S(s.toUpperCase()); case "slice": { - int a = args.length >= 1 ? Script.toInt(args[0]) : 0; - int b = args.length >= 2 ? Script.toInt(args[1]) : slength; + int a = args.length >= 1 ? JSU.toInt(args[0]) : 0; + int b = args.length >= 2 ? JSU.toInt(args[1]) : slength; if (a < 0) a = slength + a; if (b < 0) b = slength + b; if (a < 0) a = 0; if (b < 0) b = 0; if (a > slength) a = slength; if (b > slength) b = slength; - if (a > b) return Script.S(""); - return Script.S(s.substring(a,b)); + if (a > b) return JSU.S(""); + return JSU.S(s.substring(a,b)); } //#end return super.call(method, args); } public JS get(JS key) throws JSExn { - //#switch(Script.toString(key)) - case "length": return Script.N(Script.toString(this).length()); + //#switch(JSU.toString(key)) + case "length": return JSU.N(JSU.toString(this).length()); case "substring": return METHOD; case "charAt": return METHOD; case "charCodeAt": return METHOD; diff --git a/src/org/ibex/js/JSReflection.java b/src/org/ibex/js/JSReflection.java index d6ecd75..9c23830 100644 --- a/src/org/ibex/js/JSReflection.java +++ b/src/org/ibex/js/JSReflection.java @@ -12,9 +12,9 @@ public class JSReflection extends JS.Immutable { public static JS wrap(Object o) throws JSExn { if (o == null) return null; - if (o instanceof String) return Script.S((String)o); - if (o instanceof Boolean) return Script.B(((Boolean)o).booleanValue()); - if (o instanceof Number) return Script.N((Number)o); + if (o instanceof String) return JSU.S((String)o); + if (o instanceof Boolean) return JSU.B(((Boolean)o).booleanValue()); + if (o instanceof Number) return JSU.N((Number)o); if (o instanceof JS) return (JS)o; if (o instanceof Object[]) { // FIXME: get element type here @@ -30,17 +30,17 @@ public class JSReflection extends JS.Immutable { return new Enumeration(null) { private int n = 0; public boolean _hasNext() { return n < arr.length; } - public JS _next() { return Script.N(n++); } + public JS _next() { return JSU.N(n++); } }; } - public JS get(JS key) throws JSExn { return wrap(arr[Script.toInt(key)]); } + public JS get(JS key) throws JSExn { return wrap(arr[JSU.toInt(key)]); } } // FIXME public static class Hash { } // FIXME public Enumeration keys() throws JSExn { } public JS get(JS key) throws JSExn { - String k = Script.toString(key); + String k = JSU.toString(key); try { Field f = this.getClass().getField(k); return wrap(f.get(this)); @@ -60,7 +60,7 @@ public class JSReflection extends JS.Immutable { } public JS call(JS method, JS[] args) throws JSExn { - String k = Script.toString(method); + String k = JSU.toString(method); try { java.lang.reflect.Method[] methods = this.getClass().getMethods(); for(int j=0; j= s.length()) { lastIndex = 0; return null; } GnuRegexp.REMatch match = re.getMatch(s,start); @@ -56,27 +56,27 @@ public class JSRegexp extends JS.Immutable { return match == null ? null : matchToExecResult(match,re,s); } case "test": { - String s = Script.toString(args[0]); - if (!global) return Script.B(re.getMatch(s) != null); + String s = JSU.toString(args[0]); + if (!global) return JSU.B(re.getMatch(s) != null); int start = global ? lastIndex : 0; if(start < 0 || start >= s.length()) { lastIndex = 0; return null; } GnuRegexp.REMatch match = re.getMatch(s,start); lastIndex = match != null ? s.length() : match.getEndIndex(); - return Script.B(match != null); + return JSU.B(match != null); } - case "toString": return Script.S(args[0].coerceToString()); + case "toString": return JSU.S(args[0].coerceToString()); //#end break; } case 2: { - //#switch(Script.str(method)) + //#switch(JSU.str(method)) case "stringMatch": return stringMatch(args[0], args[1]); case "stringSearch": return stringSearch(args[0], args[1]); //#end break; } case 3: { - //#switch(Script.str(method)) + //#switch(JSU.str(method)) case "stringReplace": return stringReplace(args[0], args[1], args[2]); //#end break; @@ -86,23 +86,23 @@ public class JSRegexp extends JS.Immutable { } public JS get(JS key) throws JSExn { - //#switch(Script.str(key)) + //#switch(JSU.str(key)) case "exec": return METHOD; case "test": return METHOD; case "toString": return METHOD; - case "lastIndex": return Script.N(lastIndex); + case "lastIndex": return JSU.N(lastIndex); case "source": return pattern; - case "global": return Script.B(global); - case "ignoreCase": return Script.B(flags & GnuRegexp.RE.REG_ICASE); - case "multiline": return Script.B(flags & GnuRegexp.RE.REG_MULTILINE); + case "global": return JSU.B(global); + case "ignoreCase": return JSU.B(flags & GnuRegexp.RE.REG_ICASE); + case "multiline": return JSU.B(flags & GnuRegexp.RE.REG_MULTILINE); //#end return super.get(key); } public void put(JS key, JS value) throws JSExn { - if(Script.isString(key)) { - if(Script.toString(key).equals("lastIndex")) { - lastIndex = Script.toInt(value); + if(JSU.isString(key)) { + if(JSU.toString(key).equals("lastIndex")) { + lastIndex = JSU.toInt(value); return; } } @@ -112,12 +112,12 @@ public class JSRegexp extends JS.Immutable { private static JS matchToExecResult(GnuRegexp.REMatch match, GnuRegexp.RE re, String s) { try { JS ret = new JS.Obj(); - ret.put(Script.S("index"), Script.N(match.getStartIndex())); - ret.put(Script.S("input"), Script.S(s)); + ret.put(JSU.S("index"), JSU.N(match.getStartIndex())); + ret.put(JSU.S("input"), JSU.S(s)); int n = re.getNumSubs(); - ret.put(Script.S("length"), Script.N(n+1)); - ret.put(Script.ZERO, Script.S(match.toString())); - for(int i=1;i<=n;i++) ret.put(Script.N(i),Script.S(match.toString(i))); + ret.put(JSU.S("length"), JSU.N(n+1)); + ret.put(JSU.ZERO, JSU.S(match.toString())); + for(int i=1;i<=n;i++) ret.put(JSU.N(i),JSU.S(match.toString(i))); return ret; } catch (JSExn e) { throw new Error("this should never happen"); @@ -137,14 +137,14 @@ public class JSRegexp extends JS.Immutable { private static final JS[] execarg = new JS[1]; static JS stringMatch(JS o, JS arg0) throws JSExn { - String s = Script.toString(o); + String s = JSU.toString(o); GnuRegexp.RE re; JSRegexp regexp = null; if(arg0 instanceof JSRegexp) { regexp = (JSRegexp) arg0; re = regexp.re; } else { - re = newRE(Script.toString(arg0),0); + re = newRE(JSU.toString(arg0),0); } if(regexp == null) { @@ -153,25 +153,25 @@ public class JSRegexp extends JS.Immutable { } try { execarg[0] = o; - if(!regexp.global) return regexp.call(Script.S("exec"), execarg); + if(!regexp.global) return regexp.call(JSU.S("exec"), execarg); } finally { execarg[0] = null; } GnuRegexp.REMatch[] matches = re.getAllMatches(s); JSArray ret = new JSArray(matches.length); - for(int i=0;i 0 ? matches[matches.length-1].getEndIndex() : s.length(); return ret; } static JS stringSearch(JS o, JS arg0) throws JSExn { - String s = Script.toString(o); - GnuRegexp.RE re = arg0 instanceof JSRegexp ? ((JSRegexp)arg0).re : newRE(Script.toString(arg0),0); + String s = JSU.toString(o); + GnuRegexp.RE re = arg0 instanceof JSRegexp ? ((JSRegexp)arg0).re : newRE(JSU.toString(arg0),0); GnuRegexp.REMatch match = re.getMatch(s); - return match == null ? Script.N(-1) : Script.N(match.getStartIndex()); + return match == null ? JSU.N(-1) : JSU.N(match.getStartIndex()); } static JS stringReplace(JS o, JS arg0, JS arg1) throws JSExn { - String s = Script.toString(o); + String s = JSU.toString(o); GnuRegexp.RE re; JSFunction replaceFunc = null; String replaceString = null; @@ -185,7 +185,7 @@ public class JSRegexp extends JS.Immutable { if(arg1 instanceof JSFunction) replaceFunc = (JSFunction) arg1; else - replaceString = Script.toString(arg1); + replaceString = JSU.toString(arg1); GnuRegexp.REMatch[] matches; if(regexp != null && regexp.global) { matches = re.getAllMatches(s); @@ -214,15 +214,15 @@ public class JSRegexp extends JS.Immutable { int n = (regexp == null ? 0 : re.getNumSubs()); int numArgs = 3 + n; JS[] args = new JS[3 + n]; - args[0] = Script.S(match.toString()); + args[0] = JSU.S(match.toString()); args[1] = null; args[2] = null; - for(int j=1;j<=n;j++) args[j] = Script.S(match.toString(j)); - args[args.length - 2] = Script.N(match.getStartIndex()); - args[args.length - 1] = Script.S(s); + for(int j=1;j<=n;j++) args[j] = JSU.S(match.toString(j)); + args[args.length - 2] = JSU.N(match.getStartIndex()); + args[args.length - 1] = JSU.S(s); // note: can't perform pausing operations in here - sb.append(Script.toString(replaceFunc.call(args))); + sb.append(JSU.toString(replaceFunc.call(args))); } else { sb.append(mySubstitute(match,replaceString,s)); @@ -230,7 +230,7 @@ public class JSRegexp extends JS.Immutable { } int end = matches.length == 0 ? 0 : matches[matches.length-1].getEndIndex(); sb.append(sa,end,sa.length-end); - return Script.S(sb.toString()); + return JSU.S(sb.toString()); } private static String mySubstitute(GnuRegexp.REMatch match, String s, String source) { @@ -276,8 +276,8 @@ public class JSRegexp extends JS.Immutable { static JS stringSplit(JS s_, JS arg0, JS arg1, int nargs) throws JSExn { - String s = Script.toString(s_); - int limit = nargs < 2 ? Integer.MAX_VALUE : Script.toInt(arg1); + String s = JSU.toString(s_); + int limit = nargs < 2 ? Integer.MAX_VALUE : JSU.toInt(arg1); if(limit < 0) limit = Integer.MAX_VALUE; if(limit == 0) return new JSArray(0); @@ -291,7 +291,7 @@ public class JSRegexp extends JS.Immutable { regexp = (JSRegexp) arg0; re = regexp.re; } else { - sep = Script.toString(arg0); + sep = JSU.toString(arg0); } // special case this for speed. additionally, the code below doesn't properly handle @@ -299,7 +299,7 @@ public class JSRegexp extends JS.Immutable { if(sep != null && sep.length()==0) { int len = s.length(); for(int i=0;i\n"); JSArray a = (JSArray)o; for(int i=0; i < a.size(); i++) appendObject(a.get(i), sb); @@ -287,7 +287,7 @@ public class XMLRPC extends JS.Immutable { } else if (o instanceof JS) { if (tracker.get(o) != null) throw new JSExn("attempted to send multi-ref data structure via XML-RPC"); - tracker.put(o, Script.B(true)); + tracker.put(o, JSU.B(true)); JS j = (JS)o; sb.append(" \n"); Enumeration e = j.keys(); -- 1.7.10.4