2003/11/17 01:53:25
[org.ibex.core.git] / src / org / xwt / js / JSRegexp.java
index b0359ba..819e1f3 100644 (file)
@@ -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();
     }