home *** CD-ROM | disk | FTP | other *** search
- package com.netscape.javascript;
-
- import java.io.IOException;
- import java.io.StringReader;
-
- public class NativeGlobal {
- private static int URL_XALPHAS = 1;
- private static int URL_XPALPHAS = 2;
- private static int URL_PATH = 4;
- // $FF: synthetic field
- private static Class class$com$netscape$javascript$NativeGlobal;
-
- public static Object isNaN(Context var0, Scriptable var1, Object[] var2, Function var3) {
- if (var2.length < 1) {
- return Boolean.TRUE;
- } else {
- double var4 = ScriptRuntime.toNumber(var2[0]);
- return var4 != var4 ? Boolean.TRUE : Boolean.FALSE;
- }
- }
-
- public static Object parseInt(String var0, int var1) {
- int var2 = var0.length();
- if (var2 == 0) {
- return ScriptRuntime.NaNobj;
- } else {
- boolean var3 = false;
- int var4 = 0;
-
- char var5;
- do {
- var5 = var0.charAt(var4);
- if (!Character.isWhitespace(var5)) {
- break;
- }
-
- ++var4;
- } while(var4 < var2);
-
- if (var5 == '+' || (var3 = var5 == '-')) {
- ++var4;
- }
-
- boolean var6 = true;
- if (var1 == 0) {
- var1 = -1;
- } else {
- if (var1 < 2 || var1 > 36) {
- return ScriptRuntime.NaNobj;
- }
-
- if (var1 == 16 && var2 - var4 > 1 && var0.charAt(var4) == '0') {
- var5 = var0.charAt(var4 + 1);
- if (var5 == 'x' || var5 == 'X') {
- var4 += 2;
- }
- }
- }
-
- if (var1 == -1) {
- var1 = 10;
- if (var2 - var4 > 1 && var0.charAt(var4) == '0') {
- var5 = var0.charAt(var4 + 1);
- if (var5 != 'x' && var5 != 'X') {
- var1 = 8;
- ++var4;
- } else {
- var1 = 16;
- var4 += 2;
- }
- }
- }
-
- double var7 = ScriptRuntime.stringToNumber(var0, var4, var1);
- return new Double(var3 ? -var7 : var7);
- }
- }
-
- public static Object parseFloat(Context var0, Scriptable var1, Object[] var2, Function var3) {
- if (var2.length < 1) {
- return ScriptRuntime.NaNobj;
- } else {
- String var4 = ScriptRuntime.toString(var2[0]);
- int var5 = var4.length();
- if (var5 == 0) {
- return ScriptRuntime.NaNobj;
- } else {
- int var6;
- char var7;
- for(var6 = 0; TokenStream.isJSSpace(var7 = var4.charAt(var6)) && var6 + 1 < var5; ++var6) {
- }
-
- int var8 = var6;
- if (var7 == '+' || var7 == '-') {
- ++var6;
- var7 = var4.charAt(var6);
- }
-
- if (var7 == 'I') {
- if (var6 + 8 <= var5 && var4.substring(var6, var6 + 8).equals("Infinity")) {
- double var13 = var4.charAt(var8) == '-' ? Double.NEGATIVE_INFINITY : Double.POSITIVE_INFINITY;
- return new Double(var13);
- } else {
- return ScriptRuntime.NaNobj;
- }
- } else {
- int var9 = -1;
-
- label66:
- for(int var10 = -1; var6 < var5; ++var6) {
- switch (var4.charAt(var6)) {
- case '+':
- case '-':
- if (var10 != var6 - 1) {
- break label66;
- }
- break;
- case '.':
- if (var9 != -1) {
- break label66;
- }
-
- var9 = var6;
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- break;
- case 'E':
- case 'e':
- if (var10 == -1) {
- var10 = var6;
- break;
- }
- default:
- break label66;
- }
- }
-
- var4 = var4.substring(var8, var6);
-
- try {
- return Double.valueOf(var4);
- } catch (NumberFormatException var11) {
- return ScriptRuntime.NaNobj;
- }
- }
- }
- }
- }
-
- // $FF: synthetic method
- private static Class class$(String var0) {
- try {
- return Class.forName(var0);
- } catch (ClassNotFoundException var2) {
- throw new NoClassDefFoundError(((Throwable)var2).getMessage());
- }
- }
-
- public static Object unescape(Context var0, Scriptable var1, Object[] var2, Function var3) {
- if (var2.length < 1) {
- var2 = ScriptRuntime.padArguments(var2, 1);
- }
-
- String var4 = ScriptRuntime.toString(var2[0]);
- StringBuffer var5 = new StringBuffer();
-
- label45:
- for(int var6 = 0; var6 < var4.length(); ++var6) {
- char var7 = var4.charAt(var6);
- if (var7 == '%' && var6 != var4.length() - 1) {
- int var9;
- int var10;
- if (var4.charAt(var6 + 1) == 'u') {
- var10 = var6 + 2;
- var9 = var6 + 6;
- } else {
- var10 = var6 + 1;
- var9 = var6 + 3;
- }
-
- if (var9 > var4.length()) {
- var5.append('%');
- } else {
- String var8 = var4.substring(var10, var9);
-
- for(int var11 = 0; var11 < var8.length(); ++var11) {
- if (!TokenStream.isXDigit(var8.charAt(var11))) {
- var5.append('%');
- continue label45;
- }
- }
-
- var6 = var9 - 1;
- var5.append(new Character((char)Integer.valueOf(var8, 16)));
- }
- } else {
- var5.append(var7);
- }
- }
-
- return var5.toString();
- }
-
- public static void init(Scriptable var0) throws PropertyException {
- String[] var1 = new String[]{"eval", "parseInt", "parseFloat", "escape", "unescape", "isNaN", "isFinite"};
- ScriptableObject var2 = (ScriptableObject)var0;
- var2.defineFunctionProperties(var1, class$com$netscape$javascript$NativeGlobal != null ? class$com$netscape$javascript$NativeGlobal : (class$com$netscape$javascript$NativeGlobal = class$("com.netscape.javascript.NativeGlobal")), 2);
- var2.defineProperty("NaN", ScriptRuntime.NaNobj, 2);
- var2.defineProperty("Infinity", new Double(Double.POSITIVE_INFINITY), 2);
- var2.defineProperty("undefined", Undefined.instance, 2);
- }
-
- public static Object isFinite(Context var0, Scriptable var1, Object[] var2, Function var3) {
- if (var2.length < 1) {
- return Boolean.FALSE;
- } else {
- double var4 = ScriptRuntime.toNumber(var2[0]);
- return var4 == var4 && var4 != Double.POSITIVE_INFINITY && var4 != Double.NEGATIVE_INFINITY ? Boolean.TRUE : Boolean.FALSE;
- }
- }
-
- public static Object eval(Context var0, Scriptable var1, Object[] var2, Function var3) throws JavaScriptException {
- Object[] var4 = new Object[]{"eval"};
- throw Context.reportRuntimeError(Context.getMessage("msg.cant.call.indirect", var4));
- }
-
- public static Object evalSpecial(Context var0, Scriptable var1, Object var2, Object[] var3, String var4, int var5) throws JavaScriptException {
- if (var3.length < 1) {
- return Undefined.instance;
- } else {
- Object var6 = var3[0];
- if (!(var6 instanceof String)) {
- String var15 = Context.getMessage("msg.eval.nonstring", (Object[])null);
- Context.reportWarning(var15);
- return var6;
- } else {
- int[] var7 = new int[]{var5};
- if (var4 == null) {
- var4 = Context.getSourcePositionFromStack(var7);
- if (var4 == null) {
- var4 = "<eval'ed string>";
- var7[0] = 1;
- }
- }
-
- try {
- StringReader var8 = new StringReader((String)var6);
- Object var9 = var0.getSecurityDomainForStackDepth(3);
- int var10 = var0.getOptimizationLevel();
- var0.setOptimizationLevel(-1);
- Script var11 = var0.compileReader((Scriptable)null, var8, var4, var7[0], var9);
- var0.setOptimizationLevel(var10);
- if (var11 == null) {
- String var16 = Context.getMessage("msg.syntax", (Object[])null);
- throw new EvaluatorException(var16);
- } else {
- InterpretedScript var12 = (InterpretedScript)var11;
- Object var13 = var12.call(var0, var1, (Scriptable)var2, (Object[])null);
- return var13;
- }
- } catch (IOException var14) {
- throw new RuntimeException("unexpected io exception");
- }
- }
- }
- }
-
- public static Object escape(Context var0, Scriptable var1, Object[] var2, Function var3) {
- char[] var4 = new char[]{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
- if (var2.length < 1) {
- var2 = ScriptRuntime.padArguments(var2, 1);
- }
-
- String var5 = ScriptRuntime.toString(var2[0]);
- int var6 = URL_XALPHAS | URL_XPALPHAS | URL_PATH;
- if (var2.length > 1) {
- double var7 = ScriptRuntime.toNumber(var2[1]);
- if (var7 != var7 || (double)(var6 = (int)var7) != var7 || (var6 & ~(URL_XALPHAS | URL_XPALPHAS | URL_PATH)) != 0) {
- String var9 = Context.getMessage("msg.bad.esc.mask", (Object[])null);
- Context.reportError(var9);
- var6 = URL_XALPHAS | URL_XPALPHAS | URL_PATH;
- }
- }
-
- StringBuffer var10 = new StringBuffer();
-
- for(int var8 = 0; var8 < var5.length(); ++var8) {
- char var11 = var5.charAt(var8);
- if (var6 == 0 || (var11 < '0' || var11 > '9') && (var11 < 'A' || var11 > 'Z') && (var11 < 'a' || var11 > 'z') && var11 != '@' && var11 != '*' && var11 != '_' && var11 != '-' && var11 != '.' && (var11 != '/' && var11 != '+' || var6 <= 3)) {
- if (var11 < 256) {
- if (var11 == ' ' && var6 == URL_XPALPHAS) {
- var10.append('+');
- } else {
- var10.append('%');
- var10.append(var4[var11 >> 4]);
- var10.append(var4[var11 & 15]);
- }
- } else {
- var10.append('%');
- var10.append('u');
- var10.append(var4[var11 >> 12]);
- var10.append(var4[(var11 & 3840) >> 8]);
- var10.append(var4[(var11 & 240) >> 4]);
- var10.append(var4[var11 & 15]);
- }
- } else {
- var10.append(var11);
- }
- }
-
- return var10.toString();
- }
- }
-