2003/07/07 04:41:01
authorbrian <brian@xwt.org>
Fri, 30 Jan 2004 07:03:34 +0000 (07:03 +0000)
committerbrian <brian@xwt.org>
Fri, 30 Jan 2004 07:03:34 +0000 (07:03 +0000)
darcs-hash:20040130070334-aa32f-7b7856a465f5eddeae5a2bd5b262a19062871f52.gz

src/org/xwt/XWT.java
src/org/xwt/js/JS.java

index b73a1fb..8c9debb 100644 (file)
@@ -13,6 +13,8 @@ import org.bouncycastle.util.encoders.Base64;
 public final class XWT extends JS.Obj {
 
     public static final XWT singleton = new XWT();
 public final class XWT extends JS.Obj {
 
     public static final XWT singleton = new XWT();
+    private final JS xwtMath = new XWTMath();
+    private final JS xwtString = new XWTString();
 
     /** each key is a string representing a filename which the user has already given XWT permission to write to */
     private static Hashtable safeFiles = new Hashtable();
 
     /** each key is a string representing a filename which the user has already given XWT permission to write to */
     private static Hashtable safeFiles = new Hashtable();
@@ -55,7 +57,8 @@ public final class XWT extends JS.Obj {
         super.put("fileSeparator", File.separator);
         super.put("homeDir", System.getProperty("user.home"));
         super.put("tempDir", System.getProperty("java.io.tempdir"));
         super.put("fileSeparator", File.separator);
         super.put("homeDir", System.getProperty("user.home"));
         super.put("tempDir", System.getProperty("java.io.tempdir"));
-        super.put("math", org.xwt.js.JS.Math);
+        super.put("math", xwtMath);
+        super.put("string", xwtString);
 
         super.put("newBrowserWindow", new JS.Callable() { public Object call(JS.Array args) throws JS.Exn {
             if (args.length() != 1 || args.elementAt(0) == null) return null;
 
         super.put("newBrowserWindow", new JS.Callable() { public Object call(JS.Array args) throws JS.Exn {
             if (args.length() != 1 || args.elementAt(0) == null) return null;
@@ -355,12 +358,32 @@ public final class XWT extends JS.Obj {
             mythread.go.block();
         }
     }
             mythread.go.block();
         }
     }
+    
+    private static class XWTMath extends JS.Obj {
+        public XWTMath() {
+            JS gs = new JS.GlobalScope();
+            put("isNaN",gs.get("isNaN"));
+            put("isFinite",gs.get("isFinite"));
+            put("NaN",gs.get("NaN"));
+            put("Infinity",gs.get("Infinity"));
+            setSeal(true);
+        }
+        public Object get(Object key) {
+            Object ret = super.get(key);
+            if(ret == null) ret = JS.Math.get(key);
+            return ret;
+        }
+    }
+    private static class XWTString extends JS.Obj {
+        public XWTString() {
+            JS gs = new JS.GlobalScope();
+            put("parseInt",gs.get("parseInt"));
+            put("parseFloat",gs.get("parseFloat"));
+            put("decodeURI",gs.get("decodeURI"));
+            put("decodeURIComponent",gs.get("decodeURIComponent"));
+            put("encodeURI",gs.get("encodeURI"));
+            put("encodeURIComponent",gs.get("encodeURIComponent"));
+            setSeal(true);
+        }
+    }
 }
 }
-
-
-
-
-
-
-
-
index 542d465..cdc7e35 100644 (file)
@@ -148,6 +148,12 @@ public abstract class JS {
             super(sourceName, firstLine, sourceCode, scope);
         }
     }
             super(sourceName, firstLine, sourceCode, scope);
         }
     }
+    
+    /** a scope that is populated with js objects and functions normally found in the global scope */
+    public static class GlobalScope extends GlobalScopeImpl {
+        public GlobalScope() { this(null); }
+        public GlobalScope(JS.Scope parent) { super(parent); }
+    }
 
     public static final JS Math = new org.xwt.js.Math();
  
 
     public static final JS Math = new org.xwt.js.Math();