X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Forg%2Fxwt%2Fjs%2FJSRegexp.java;h=819e1f30d1ce6aa64a6d472eda4b6be04e8f254a;hb=8c1756ef3fd42cc2f324baf47e13a83f51045efe;hp=b0359ba4b5f073afd13db2aa295cbb14e6ee8ff7;hpb=2b1b2ef9bb8b8a34efb6329c552eea4f773d9466;p=org.ibex.core.git diff --git a/src/org/xwt/js/JSRegexp.java b/src/org/xwt/js/JSRegexp.java index b0359ba..819e1f3 100644 --- a/src/org/xwt/js/JSRegexp.java +++ b/src/org/xwt/js/JSRegexp.java @@ -28,34 +28,38 @@ public class JSRegexp extends JSCallable { } } re = newRE(pattern,flags); - _put("source",pattern); - _put("global",wrapBool(global)); - _put("ignoreCase",wrapBool(flags & RE.REG_ICASE)); - _put("multiline",wrapBool(flags & RE.REG_MULTILINE)); + put("source",pattern); + put("global",wrapBool(global)); + put("ignoreCase",wrapBool(flags & RE.REG_ICASE)); + put("multiline",wrapBool(flags & RE.REG_MULTILINE)); } } - public Object call(Object method, JSArray args) throws JS.Exn { - if (method.equals("exec")) { - return exec(args); - } else if (method.equals("test")) { - return test(args); - } else if (method.equals("toString")) { - return toString(); + public Object callMethod(Object method, Object a0, Object a1, Object a2, Object[] rest, int nargs) { + switch(nargs) { + case 1: { + //#switch(method) + case "exec": return exec((String)a0); + case "test": return test((String)a0); + case "toString": return toString(a0); + //#end + break; + } } - return null; + return super.callMethod(method, a0, a1, a2, rest, nargs); } - // gcj bug... - public Object get(Object key) { return _get(key); } - public void put(Object key,Object value) { _put(key,value); } - - public Object _get(Object key) { - if(key.equals("lastIndex")) return new Integer(lastIndex); + public Object get(Object key) { + //#switch(key) + case "exec": return METHOD; + case "test": return METHOD; + case "toString": return METHOD; + case "lastIndex": return new Integer(lastIndex); + //#end return super.get(key); } - public void _put(Object key, Object value) { + public void put(Object key, Object value) { if(key.equals("lastIndex")) lastIndex = JS.toNumber(value).intValue(); super.put(key,value); } @@ -77,7 +81,7 @@ public class JSRegexp extends JSCallable { } private static Object matchToExecResult(REMatch match, RE re, String s) { - JSObj ret = new JSObj(); + JS ret = new JS(); ret.put("index",new Integer(match.getStartIndex())); ret.put("input",s); int n = re.getNumSubs(); @@ -95,10 +99,7 @@ public class JSRegexp extends JSCallable { return exec(s); } - private Object test(JSArray args) throws JS.Exn { - if(args.length() < 1) throw new JS.Exn("Not enough args to match"); - String s = args.elementAt(0).toString(); - + private Object test(String s) throws JS.Exn { if(global) { int start = global ? lastIndex : 0; if(start < 0 || start >= s.length()) { @@ -117,11 +118,11 @@ public class JSRegexp extends JSCallable { public String toString() { StringBuffer sb = new StringBuffer(); sb.append('/'); - sb.append(_get("source")); + sb.append(get("source")); sb.append('/'); if(global) sb.append('g'); - if(Boolean.TRUE.equals(_get("ignoreCase"))) sb.append('i'); - if(Boolean.TRUE.equals(_get("multiline"))) sb.append('m'); + if(Boolean.TRUE.equals(get("ignoreCase"))) sb.append('i'); + if(Boolean.TRUE.equals(get("multiline"))) sb.append('m'); return sb.toString(); }