home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1999 November / PCONLINE_11_99.ISO / filesbbs / OS2 / APCHSSL2.ZIP / OS2HTTPD / jserv / com / netscape / javascript / NativeString.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-04-09  |  10.4 KB  |  618 lines

  1. package com.netscape.javascript;
  2.  
  3. import java.lang.reflect.Method;
  4.  
  5. public class NativeString extends RescopeableObject implements Wrapper {
  6.    private static final String defaultValue = "";
  7.    private String string;
  8.    // $FF: synthetic field
  9.    private static Class class$com$netscape$javascript$NativeString;
  10.  
  11.    public String getClassName() {
  12.       return "String";
  13.    }
  14.  
  15.    public static String js_toUpperCase(Context var0, Scriptable var1, Object[] var2, Function var3) {
  16.       String var4 = ScriptRuntime.toString(var1);
  17.       return var4.toUpperCase();
  18.    }
  19.  
  20.    public String js_fontsize(String var1) {
  21.       return this.tagify("FONT SIZE", "FONT", var1);
  22.    }
  23.  
  24.    public String js_valueOf() {
  25.       return this.string;
  26.    }
  27.  
  28.    public void put(int var1, Scriptable var2, Object var3) {
  29.       if (var1 < 0 || var1 >= this.string.length()) {
  30.          super.put(var1, var2, var3);
  31.       }
  32.    }
  33.  
  34.    public double js_getLength() {
  35.       return (double)this.string.length();
  36.    }
  37.  
  38.    public String js_blink() {
  39.       return this.tagify("BLINK", (String)null, (String)null);
  40.    }
  41.  
  42.    public static Object js_String(Context var0, Object[] var1, Function var2, boolean var3) {
  43.       String var4 = var1.length >= 1 ? ScriptRuntime.toString(var1[0]) : "";
  44.       return var3 ? new NativeString(var4) : var4;
  45.    }
  46.  
  47.    public String js_toString() {
  48.       return this.string;
  49.    }
  50.  
  51.    private String tagify(String var1, String var2, String var3) {
  52.       StringBuffer var4 = new StringBuffer();
  53.       var4.append('<');
  54.       var4.append(var1);
  55.       if (var3 != null) {
  56.          var4.append('=');
  57.          var4.append(var3);
  58.       }
  59.  
  60.       var4.append('>');
  61.       var4.append(this.string);
  62.       var4.append("</");
  63.       var4.append(var2 == null ? var1 : var2);
  64.       var4.append('>');
  65.       return var4.toString();
  66.    }
  67.  
  68.    public static Object js_search(Context var0, Scriptable var1, Object[] var2, Function var3) throws JavaScriptException {
  69.       MatchData var4 = new MatchData();
  70.       var4.optarg = 1;
  71.       var4.mode = 3;
  72.       var4.parent = ScriptableObject.getTopLevelScope(var3);
  73.       return matchOrReplace(var0, var1, var2, var3, var4);
  74.    }
  75.  
  76.    private static Object matchOrReplace(Context var0, Scriptable var1, Object[] var2, Function var3, GlobData var4) throws JavaScriptException {
  77.       String var6 = ScriptRuntime.toString(var1);
  78.       var4.str = var6;
  79.       RegExpStatics var7 = var0.getRegExpStatics();
  80.       NativeRegExp var5;
  81.       if (var2[0] instanceof NativeRegExp) {
  82.          var5 = (NativeRegExp)var2[0];
  83.       } else {
  84.          String var8 = ScriptRuntime.toString(var2[0]);
  85.          String var9;
  86.          if (var4.optarg < var2.length) {
  87.             var2[0] = var8;
  88.             var9 = ScriptRuntime.toString(var2[var4.optarg]);
  89.          } else {
  90.             var9 = null;
  91.          }
  92.  
  93.          Scriptable var10 = ScriptableObject.getTopLevelScope(var3);
  94.          var5 = new NativeRegExp(var10, var8, var9);
  95.       }
  96.  
  97.       var4.regexp = var5;
  98.       var4.global = (var5.getFlags() & 1) != 0;
  99.       int[] var11 = new int[1];
  100.       Object var12 = null;
  101.       if (var4.mode == 3) {
  102.          var12 = var5.executeRegExp(var3, var6, var11, true);
  103.          if (var12 != null && var12.equals(Boolean.TRUE)) {
  104.             var12 = new Integer(var7.leftContext.length);
  105.          } else {
  106.             var12 = new Integer(-1);
  107.          }
  108.       } else if (var4.global) {
  109.          var5.setLastIndex(0);
  110.  
  111.          for(int var14 = 0; var11[0] <= var6.length(); ++var14) {
  112.             var12 = var5.executeRegExp(var3, var6, var11, true);
  113.             if (var12 == null || !var12.equals(Boolean.TRUE)) {
  114.                break;
  115.             }
  116.  
  117.             var4.doGlobal(var3, var14);
  118.             if (var7.lastMatch.length == 0) {
  119.                if (var11[0] == var6.length()) {
  120.                   break;
  121.                }
  122.  
  123.                int var10002 = var11[0]++;
  124.             }
  125.          }
  126.       } else {
  127.          var12 = var5.executeRegExp(var3, var6, var11, var4.mode == 2);
  128.       }
  129.  
  130.       return var12;
  131.    }
  132.  
  133.    public static void finishInit(Scriptable var0, FunctionObject var1, Scriptable var2) {
  134.       Method[] var3 = FunctionObject.findMethods(class$com$netscape$javascript$NativeString != null ? class$com$netscape$javascript$NativeString : (class$com$netscape$javascript$NativeString = class$("com.netscape.javascript.NativeString")), "fromCharCode");
  135.       FunctionObject var4 = new FunctionObject("fromCharCode", var3[0], var1);
  136.       ((ScriptableObject)var1).defineProperty("fromCharCode", var4, 2);
  137.       String[] var5 = new String[]{"indexOf", "lastIndexOf", "substring", "toUpperCase", "toLowerCase", "toString"};
  138.       short[] var6 = new short[]{2, 2, 2, 0, 0, 0};
  139.  
  140.       for(int var7 = 0; var7 < var5.length; ++var7) {
  141.          Object var8 = var2.get(var5[var7], var2);
  142.          ((FunctionObject)var8).setLength(var6[var7]);
  143.       }
  144.  
  145.    }
  146.  
  147.    public String js_sub() {
  148.       return this.tagify("SUB", (String)null, (String)null);
  149.    }
  150.  
  151.    public static String js_toLowerCase(Context var0, Scriptable var1, Object[] var2, Function var3) {
  152.       String var4 = ScriptRuntime.toString(var1);
  153.       return var4.toLowerCase();
  154.    }
  155.  
  156.    public static String js_charAt(Context var0, Scriptable var1, Object[] var2, Function var3) {
  157.       if (var2.length < 1) {
  158.          var2 = ScriptRuntime.padArguments(var2, 1);
  159.       }
  160.  
  161.       String var4 = ScriptRuntime.toString(var1);
  162.       double var5 = ScriptRuntime.toInteger(var2[0]);
  163.       return !(var5 < (double)0.0F) && !(var5 >= (double)var4.length()) ? var4.substring((int)var5, (int)var5 + 1) : "";
  164.    }
  165.  
  166.    public static double js_charCodeAt(Context var0, Scriptable var1, Object[] var2, Function var3) {
  167.       if (var2.length < 1) {
  168.          var2 = ScriptRuntime.padArguments(var2, 1);
  169.       }
  170.  
  171.       String var4 = ScriptRuntime.toString(var1);
  172.       double var5 = ScriptRuntime.toInteger(var2[0]);
  173.       return !(var5 < (double)0.0F) && !(var5 >= (double)var4.length()) ? (double)var4.charAt((int)var5) : ScriptRuntime.NaN;
  174.    }
  175.  
  176.    public String js_big() {
  177.       return this.tagify("BIG", (String)null, (String)null);
  178.    }
  179.  
  180.    public String js_link(String var1) {
  181.       return this.tagify("A HREF", "A", var1);
  182.    }
  183.  
  184.    public String js_bold() {
  185.       return this.tagify("B", (String)null, (String)null);
  186.    }
  187.  
  188.    public String js_small() {
  189.       return this.tagify("SMALL", (String)null, (String)null);
  190.    }
  191.  
  192.    public String js_strike() {
  193.       return this.tagify("STRIKE", (String)null, (String)null);
  194.    }
  195.  
  196.    public static int js_lastIndexOf(Context var0, Scriptable var1, Object[] var2, Function var3) {
  197.       if (var2.length < 2) {
  198.          var2 = ScriptRuntime.padArguments(var2, 2);
  199.       }
  200.  
  201.       String var4 = ScriptRuntime.toString(var1);
  202.       String var5 = ScriptRuntime.toString(var2[0]);
  203.       double var6 = ScriptRuntime.toNumber(var2[1]);
  204.       if (var6 == var6 && !(var6 > (double)var4.length())) {
  205.          if (var6 < (double)0.0F) {
  206.             var6 = (double)0.0F;
  207.          }
  208.       } else {
  209.          var6 = (double)var4.length();
  210.       }
  211.  
  212.       return var4.lastIndexOf(var5, (int)var6);
  213.    }
  214.  
  215.    public Object get(int var1, Scriptable var2) {
  216.       return var1 >= 0 && var1 < this.string.length() ? this.string.substring(var1, var1 + 1) : super.get(var1, var2);
  217.    }
  218.  
  219.    public static String js_concat(Context var0, Scriptable var1, Object[] var2, Function var3) {
  220.       StringBuffer var4 = new StringBuffer();
  221.       var4.append(ScriptRuntime.toString(var1));
  222.  
  223.       for(int var5 = 0; var5 < var2.length; ++var5) {
  224.          var4.append(ScriptRuntime.toString(var2[var5]));
  225.       }
  226.  
  227.       return var4.toString();
  228.    }
  229.  
  230.    public String js_fixed() {
  231.       return this.tagify("TT", (String)null, (String)null);
  232.    }
  233.  
  234.    public String toString() {
  235.       return this.string;
  236.    }
  237.  
  238.    public NativeString() {
  239.       this.string = "";
  240.    }
  241.  
  242.    public NativeString(String var1) {
  243.       this.string = var1;
  244.    }
  245.  
  246.    public static String fromCharCode(Context var0, Scriptable var1, Object[] var2, Function var3) {
  247.       StringBuffer var4 = new StringBuffer();
  248.       if (var2.length < 1) {
  249.          return "";
  250.       } else {
  251.          for(int var5 = 0; var5 < var2.length; ++var5) {
  252.             var4.append(ScriptRuntime.toUint16(var2[var5]));
  253.          }
  254.  
  255.          return var4.toString();
  256.       }
  257.    }
  258.  
  259.    public static String js_substring(Context var0, Scriptable var1, Object[] var2, Function var3) {
  260.       if (var2.length < 1) {
  261.          var2 = ScriptRuntime.padArguments(var2, 1);
  262.       }
  263.  
  264.       String var4 = ScriptRuntime.toString(var1);
  265.       int var5 = var4.length();
  266.       double var6 = ScriptRuntime.toInteger(var2[0]);
  267.       if (var6 < (double)0.0F) {
  268.          var6 = (double)0.0F;
  269.       } else if (var6 > (double)var5) {
  270.          var6 = (double)var5;
  271.       }
  272.  
  273.       double var8;
  274.       if (var2.length == 1) {
  275.          var8 = (double)var5;
  276.       } else {
  277.          var8 = ScriptRuntime.toInteger(var2[1]);
  278.          if (var8 < (double)0.0F) {
  279.             var8 = (double)0.0F;
  280.          } else if (var8 > (double)var5) {
  281.             var8 = (double)var5;
  282.          }
  283.  
  284.          if (var8 < var6) {
  285.             if (var0.getLanguageVersion() != 120) {
  286.                double var10 = var6;
  287.                var6 = var8;
  288.                var8 = var10;
  289.             } else {
  290.                var8 = var6;
  291.             }
  292.          }
  293.       }
  294.  
  295.       return var4.substring((int)var6, (int)var8);
  296.    }
  297.  
  298.    public String js_anchor(String var1) {
  299.       return this.tagify("A NAME", "A", var1);
  300.    }
  301.  
  302.    // $FF: synthetic method
  303.    private static Class class$(String var0) {
  304.       try {
  305.          return Class.forName(var0);
  306.       } catch (ClassNotFoundException var2) {
  307.          throw new NoClassDefFoundError(((Throwable)var2).getMessage());
  308.       }
  309.    }
  310.  
  311.    public static Object js_replace(Context var0, Scriptable var1, Object[] var2, Function var3) throws JavaScriptException {
  312.       Object var4 = var2.length < 2 ? Undefined.instance : var2[1];
  313.       String var5 = null;
  314.       Function var6 = null;
  315.       if (var4 instanceof Function) {
  316.          var6 = (Function)var4;
  317.       } else {
  318.          var5 = ScriptRuntime.toString(var4);
  319.       }
  320.  
  321.       RegExpStatics var7 = var0.getRegExpStatics();
  322.       ReplaceData var8 = new ReplaceData();
  323.       var8.optarg = 2;
  324.       var8.mode = 2;
  325.       var8.lambda = var6;
  326.       var8.repstr = var5 == null ? null : var5.toCharArray();
  327.       var8.dollar = var5 == null ? -1 : var5.indexOf(36);
  328.       var8.charArray = null;
  329.       var8.length = 0;
  330.       var8.index = 0;
  331.       var8.leftIndex = 0;
  332.       Object var9 = matchOrReplace(var0, var1, var2, var3, var8);
  333.       if (var8.charArray == null) {
  334.          if (var8.global || var9 == null || !var9.equals(Boolean.TRUE)) {
  335.             return var8.str;
  336.          }
  337.  
  338.          int var11 = var7.leftContext.length;
  339.          int var12 = var11 + var8.findReplen(var7);
  340.          char[] var10 = new char[var12];
  341.          SubString var13 = var7.leftContext;
  342.          System.arraycopy(var13.charArray, var13.index, var10, 0, var11);
  343.          var8.doReplace(var7, var10, var11);
  344.          var8.charArray = var10;
  345.          var8.length = var12;
  346.       }
  347.  
  348.       SubString var15 = var7.rightContext;
  349.       int var16 = var15.length;
  350.       int var17 = var8.length + var16;
  351.       char[] var14 = new char[var17];
  352.       System.arraycopy(var8.charArray, 0, var14, 0, var8.charArray.length);
  353.       System.arraycopy(var15.charArray, var15.index, var14, var8.length, var16);
  354.       return new String(var14, 0, var17);
  355.    }
  356.  
  357.    public static String js_substr(Context var0, Scriptable var1, Object[] var2, Function var3) {
  358.       String var4 = ScriptRuntime.toString(var1);
  359.       if (var2.length < 1) {
  360.          return var4;
  361.       } else {
  362.          double var5 = ScriptRuntime.toInteger(var2[0]);
  363.          int var9 = var4.length();
  364.          if (var5 < (double)0.0F) {
  365.             var5 += (double)var9;
  366.             if (var5 < (double)0.0F) {
  367.                var5 = (double)0.0F;
  368.             }
  369.          } else if (var5 > (double)var9) {
  370.             var5 = (double)var9;
  371.          }
  372.  
  373.          double var7;
  374.          if (var2.length == 1) {
  375.             var7 = (double)var9;
  376.          } else {
  377.             var7 = ScriptRuntime.toInteger(var2[1]);
  378.             if (var7 < (double)0.0F) {
  379.                var7 = (double)0.0F;
  380.             }
  381.  
  382.             var7 += var5;
  383.             if (var7 > (double)var9) {
  384.                var7 = (double)var9;
  385.             }
  386.          }
  387.  
  388.          return var4.substring((int)var5, (int)var7);
  389.       }
  390.    }
  391.  
  392.    public static int js_indexOf(Context var0, Scriptable var1, Object[] var2, Function var3) {
  393.       if (var2.length < 2) {
  394.          var2 = ScriptRuntime.padArguments(var2, 2);
  395.       }
  396.  
  397.       String var4 = ScriptRuntime.toString(var1);
  398.       String var5 = ScriptRuntime.toString(var2[0]);
  399.       double var6 = ScriptRuntime.toInteger(var2[1]);
  400.       if (var6 > (double)var4.length()) {
  401.          return -1;
  402.       } else {
  403.          if (var6 < (double)0.0F) {
  404.             var6 = (double)0.0F;
  405.          }
  406.  
  407.          return var4.indexOf(var5, (int)var6);
  408.       }
  409.    }
  410.  
  411.    public Object unwrap() {
  412.       return this.string;
  413.    }
  414.  
  415.    public String js_sup() {
  416.       return this.tagify("SUP", (String)null, (String)null);
  417.    }
  418.  
  419.    private static int find_split(Function var0, String var1, String var2, NativeRegExp var3, int[] var4, int[] var5, boolean[] var6) {
  420.       int var13 = var4[0];
  421.       int var8 = var1.length();
  422.       int var9 = Context.getContext().getLanguageVersion();
  423.       if (var9 == 120 && var3 == null && var2.length() == 1 && var2.charAt(0) == ' ') {
  424.          if (var13 == 0) {
  425.             while(var13 < var8 && Character.isWhitespace(var1.charAt(var13))) {
  426.                ++var13;
  427.             }
  428.  
  429.             var4[0] = var13;
  430.          }
  431.  
  432.          if (var13 == var8) {
  433.             return -1;
  434.          } else {
  435.             while(var13 < var8 && !Character.isWhitespace(var1.charAt(var13))) {
  436.                ++var13;
  437.             }
  438.  
  439.             int var15;
  440.             for(var15 = var13; var15 < var8 && Character.isWhitespace(var1.charAt(var15)); ++var15) {
  441.             }
  442.  
  443.             var5[0] = var15 - var13;
  444.             return var13;
  445.          }
  446.       } else if (var13 > var8) {
  447.          return -1;
  448.       } else if (var3 == null) {
  449.          if (var9 != 0 && var9 < 130 && var8 == 0) {
  450.             return -1;
  451.          } else if (var2.length() == 0) {
  452.             return var13 + 1;
  453.          } else if (var4[0] >= var8) {
  454.             return var8;
  455.          } else {
  456.             var13 = var1.indexOf(var2, var4[0]);
  457.             return var13 != -1 ? var13 : var8;
  458.          }
  459.       } else {
  460.          while(var9 != 120 || var13 != var8) {
  461.             int var10 = var4[0];
  462.             var4[0] = var13;
  463.             if (var3.executeRegExp(var0, var1, var4, true) != Boolean.TRUE) {
  464.                var4[0] = var10;
  465.                var5[0] = 1;
  466.                var6[0] = false;
  467.                return var8;
  468.             }
  469.  
  470.             var13 = var4[0];
  471.             var4[0] = var10;
  472.             var6[0] = true;
  473.             RegExpStatics var11 = Context.getContext().getRegExpStatics();
  474.             SubString var12 = var11.lastMatch;
  475.             var5[0] = var12.length;
  476.             if (var5[0] != 0 || var13 != var4[0]) {
  477.                return var13 - var5[0];
  478.             }
  479.  
  480.             if (var13 == var8) {
  481.                var5[0] = 1;
  482.                return var13;
  483.             }
  484.  
  485.             ++var13;
  486.          }
  487.  
  488.          return -1;
  489.       }
  490.    }
  491.  
  492.    public static Object js_split(Context var0, Scriptable var1, Object[] var2, Function var3) {
  493.       String var4 = ScriptRuntime.toString(var1);
  494.       Scriptable var5 = ScriptableObject.getTopLevelScope(var3);
  495.       Scriptable var6 = ScriptRuntime.newObject(var0, var5, "Array", (Object[])null);
  496.       if (var2.length < 1) {
  497.          var6.put(0, var6, var4);
  498.          return var6;
  499.       } else {
  500.          boolean var7 = var2.length > 1;
  501.          int var8 = 0;
  502.          if (var7) {
  503.             double var9 = ScriptRuntime.toInteger(var2[1]);
  504.             if (var9 < (double)0.0F) {
  505.                var9 = (double)0.0F;
  506.             } else if (var9 > (double)var4.length()) {
  507.                var9 = (double)(1 + var4.length());
  508.             }
  509.  
  510.             var8 = (int)var9;
  511.          }
  512.  
  513.          String var21 = null;
  514.          NativeRegExp var10 = null;
  515.          RegExpStatics var11 = null;
  516.          int[] var12 = new int[1];
  517.          if (var2[0] instanceof NativeRegExp) {
  518.             var10 = (NativeRegExp)var2[0];
  519.             var11 = var0.getRegExpStatics();
  520.          } else {
  521.             var21 = ScriptRuntime.toString(var2[0]);
  522.             var12[0] = var21.length();
  523.          }
  524.  
  525.          int[] var13 = new int[1];
  526.          int var15 = 0;
  527.          boolean[] var16 = new boolean[1];
  528.  
  529.          int var14;
  530.          while((var14 = find_split(var3, var4, var21, var10, var13, var12, var16)) >= 0 && (!var7 || var15 < var8) && var14 <= var4.length()) {
  531.             String var17;
  532.             if (var4.length() == 0) {
  533.                var17 = var4;
  534.             } else {
  535.                var17 = var4.substring(var13[0], var14);
  536.             }
  537.  
  538.             var6.put(var15, var6, var17);
  539.             ++var15;
  540.             if (var10 != null && var16[0]) {
  541.                int var18 = var11.parens.size();
  542.  
  543.                for(int var19 = 0; var19 < var18 && (!var7 || var15 < var8); ++var19) {
  544.                   SubString var20 = var11.getParenSubString(var19);
  545.                   var6.put(var15, var6, var20.toString());
  546.                   ++var15;
  547.                }
  548.  
  549.                var16[0] = false;
  550.             }
  551.  
  552.             var13[0] = var14 + var12[0];
  553.             if (var0.getLanguageVersion() < 130 && var0.getLanguageVersion() != 0 && !var7 && var13[0] == var4.length()) {
  554.                break;
  555.             }
  556.          }
  557.  
  558.          return var6;
  559.       }
  560.    }
  561.  
  562.    public static Object js_match(Context var0, Scriptable var1, Object[] var2, Function var3) throws JavaScriptException {
  563.       MatchData var4 = new MatchData();
  564.       var4.optarg = 1;
  565.       var4.mode = 1;
  566.       var4.parent = ScriptableObject.getTopLevelScope(var3);
  567.       Object var5 = matchOrReplace(var0, var1, var2, var3, var4);
  568.       return var4.arrayobj == null ? var5 : var4.arrayobj;
  569.    }
  570.  
  571.    public String js_fontcolor(String var1) {
  572.       return this.tagify("FONT COLOR", "FONT", var1);
  573.    }
  574.  
  575.    public String js_italics() {
  576.       return this.tagify("I", (String)null, (String)null);
  577.    }
  578.  
  579.    public static String js_slice(Context var0, Scriptable var1, Object[] var2, Function var3) {
  580.       String var4 = ScriptRuntime.toString(var1);
  581.       if (var2.length != 0) {
  582.          double var5 = ScriptRuntime.toInteger(var2[0]);
  583.          int var9 = var4.length();
  584.          if (var5 < (double)0.0F) {
  585.             var5 += (double)var9;
  586.             if (var5 < (double)0.0F) {
  587.                var5 = (double)0.0F;
  588.             }
  589.          } else if (var5 > (double)var9) {
  590.             var5 = (double)var9;
  591.          }
  592.  
  593.          double var7;
  594.          if (var2.length == 1) {
  595.             var7 = (double)var9;
  596.          } else {
  597.             var7 = ScriptRuntime.toInteger(var2[1]);
  598.             if (var7 < (double)0.0F) {
  599.                var7 += (double)var9;
  600.                if (var7 < (double)0.0F) {
  601.                   var7 = (double)0.0F;
  602.                }
  603.             } else if (var7 > (double)var9) {
  604.                var7 = (double)var9;
  605.             }
  606.  
  607.             if (var7 < var5) {
  608.                var7 = var5;
  609.             }
  610.          }
  611.  
  612.          return var4.substring((int)var5, (int)var7);
  613.       } else {
  614.          return var4;
  615.       }
  616.    }
  617. }
  618.