put("decodeURIComponent",gs.get("decodeURIComponent"));
put("encodeURI",gs.get("encodeURI"));
put("encodeURIComponent",gs.get("encodeURIComponent"));
+ put("escape",gs.get("escape"));
+ put("unescape",gs.get("unescape"));
put("fromCharCode",gs.get("stringFromCharCode"));
setSeal(true);
}
} else if(method.equals("encodeURIComponent")) {
if(checkOnly) return Boolean.TRUE;
return encodeURIComponent(args);
+ } else if(method.equals("escape")) {
+ if(checkOnly) return Boolean.TRUE;
+ return escape(args);
+ } else if(method.equals("unescape")) {
+ if(checkOnly) return Boolean.TRUE;
+ return unescape(args);
} else if(method.equals("stringFromCharCode")) {
if(checkOnly) return Boolean.TRUE;
return stringFromCharCode(args);
private Object encodeURIComponent(JS.Array args) {
throw new JS.Exn("encodeURIComponent is unimplemented");
}
+ private Object escape(JS.Array args) {
+ throw new JS.Exn("escape is unimplemented");
+ }
+ private Object unescape(JS.Array args) {
+ throw new JS.Exn("unescape is unimplemented");
+ }
}
} else if(o instanceof Boolean) {
// No methods for Booleans
}
- s = o.toString();
+ s = JS.toString(o);
int slength = s.length();
if(method.equals("substring")) {
int a = alength >= 1 ? JS.toInt(args.elementAt(0)) : 0;
if(a > b) { int tmp = a; a = b; b = tmp; }
return s.substring(a,b);
}
+ if(method.equals("substr")) {
+ int start = alength >= 1 ? JS.toInt(args.elementAt(0)) : 0;
+ int len = alength >= 2 ? JS.toInt(args.elementAt(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 "";
+ return s.substring(start,start+len);
+ }
if(method.equals("charAt")) {
int p = alength >= 1 ? JS.toInt(args.elementAt(0)) : 0;
if(p < 0 || p >= slength) return "";
}
if(method.equals("split")){
return Regexp.stringSplit(s,args);
- }
+ }
if(method.equals("toLowerCase")) return s.toLowerCase();
if(method.equals("toUpperCase")) return s.toUpperCase();
if(method.equals("toString")) return s;
if(key.equals("substring") || key.equals("charAt") || key.equals("charCodeAt") || key.equals("concat") ||
key.equals("indexOf") || key.equals("lastIndexOf") || key.equals("match") || key.equals("replace") ||
key.equals("seatch") || key.equals("slice") || key.equals("split") || key.equals("toLowerCase") ||
- key.equals("toUpperCase") || key.equals("toString")
+ key.equals("toUpperCase") || key.equals("toString") || key.equals("substr")
)
returnCallable = true;
}