} 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;
}