home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 1999 April / DPPCPRO0499.ISO / April / Notes / 50b2wic.exe / DATA1.CAB / NotesProgramFilesJavaSupport / rt.jar / java / text / PatternEntry.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-04-23  |  3.6 KB  |  259 lines

  1. package java.text;
  2.  
  3. class PatternEntry {
  4.    static final int RESET = -2;
  5.    static final int UNSET = -1;
  6.    int strength = -1;
  7.    String chars = "";
  8.    String extension = "";
  9.  
  10.    public void appendQuotedExtension(StringBuffer var1) {
  11.       appendQuoted(this.extension, var1);
  12.    }
  13.  
  14.    public void appendQuotedChars(StringBuffer var1) {
  15.       appendQuoted(this.chars, var1);
  16.    }
  17.  
  18.    public boolean equals(Object var1) {
  19.       if (var1 == null) {
  20.          return false;
  21.       } else {
  22.          PatternEntry var2 = (PatternEntry)var1;
  23.          boolean var3 = this.chars.equals(var2.chars) && this.extension.equals(var2.extension);
  24.          return var3;
  25.       }
  26.    }
  27.  
  28.    public String toString() {
  29.       StringBuffer var1 = new StringBuffer();
  30.       this.addToBuffer(var1, true, false, (PatternEntry)null);
  31.       return var1.toString();
  32.    }
  33.  
  34.    int getStrength() {
  35.       return this.strength;
  36.    }
  37.  
  38.    String getExtension() {
  39.       return this.extension;
  40.    }
  41.  
  42.    String getChars() {
  43.       return this.chars;
  44.    }
  45.  
  46.    PatternEntry() {
  47.    }
  48.  
  49.    PatternEntry(int var1, StringBuffer var2, StringBuffer var3) {
  50.       this.strength = var1;
  51.       this.chars = var2.toString();
  52.       this.extension = var3.toString();
  53.    }
  54.  
  55.    void addToBuffer(StringBuffer var1, boolean var2, boolean var3, PatternEntry var4) {
  56.       if (var3 && var1.length() > 0) {
  57.          if (this.strength != 0 && var4 == null) {
  58.             var1.append(' ');
  59.          } else {
  60.             var1.append('\n');
  61.          }
  62.       }
  63.  
  64.       if (var4 != null) {
  65.          var1.append('&');
  66.          if (var3) {
  67.             var1.append(' ');
  68.          }
  69.  
  70.          var4.appendQuotedChars(var1);
  71.          this.appendQuotedExtension(var1);
  72.          if (var3) {
  73.             var1.append(' ');
  74.          }
  75.       }
  76.  
  77.       switch (this.strength) {
  78.          case -2:
  79.             var1.append('&');
  80.             break;
  81.          case -1:
  82.             var1.append('?');
  83.             break;
  84.          case 0:
  85.             var1.append('<');
  86.             break;
  87.          case 1:
  88.             var1.append(';');
  89.             break;
  90.          case 2:
  91.             var1.append(',');
  92.             break;
  93.          case 3:
  94.             var1.append('=');
  95.       }
  96.  
  97.       if (var3) {
  98.          var1.append(' ');
  99.       }
  100.  
  101.       appendQuoted(this.chars, var1);
  102.       if (var2 && this.extension.length() != 0) {
  103.          var1.append('/');
  104.          appendQuoted(this.extension, var1);
  105.       }
  106.  
  107.    }
  108.  
  109.    int getNextEntry(String var1, int var2) throws ParseException {
  110.       byte var3 = -1;
  111.       StringBuffer var4 = new StringBuffer();
  112.       StringBuffer var5 = new StringBuffer();
  113.       boolean var6 = true;
  114.  
  115.       label88:
  116.       for(boolean var7 = false; var2 < var1.length(); ++var2) {
  117.          char var8 = var1.charAt(var2);
  118.          if (var7) {
  119.             if (var8 == '\'') {
  120.                var7 = false;
  121.             } else if (var4.length() == 0) {
  122.                var4.append(var8);
  123.             } else if (var6) {
  124.                var4.append(var8);
  125.             } else {
  126.                var5.append(var8);
  127.             }
  128.          } else {
  129.             switch (var8) {
  130.                case '\t':
  131.                case '\n':
  132.                case '\f':
  133.                case '\r':
  134.                case ' ':
  135.                   break;
  136.                case '&':
  137.                   if (var3 != -1) {
  138.                      break label88;
  139.                   }
  140.  
  141.                   var3 = -2;
  142.                   break;
  143.                case '\'':
  144.                   var7 = true;
  145.                   ++var2;
  146.                   var8 = var1.charAt(var2);
  147.                   if (var4.length() == 0) {
  148.                      var4.append(var8);
  149.                   } else if (var6) {
  150.                      var4.append(var8);
  151.                   } else {
  152.                      var5.append(var8);
  153.                   }
  154.                   break;
  155.                case ',':
  156.                   if (var3 != -1) {
  157.                      break label88;
  158.                   }
  159.  
  160.                   var3 = 2;
  161.                   break;
  162.                case '/':
  163.                   var6 = false;
  164.                   break;
  165.                case ';':
  166.                   if (var3 != -1) {
  167.                      break label88;
  168.                   }
  169.  
  170.                   var3 = 1;
  171.                   break;
  172.                case '<':
  173.                   if (var3 != -1) {
  174.                      break label88;
  175.                   }
  176.  
  177.                   var3 = 0;
  178.                   break;
  179.                case '=':
  180.                   if (var3 != -1) {
  181.                      break label88;
  182.                   }
  183.  
  184.                   var3 = 3;
  185.                   break;
  186.                default:
  187.                   if (var3 == -1) {
  188.                      throw new ParseException("missing char (=,;<&) : " + var1.substring(var2, var2 + 10 < var1.length() ? var2 + 10 : var1.length()), var2);
  189.                   }
  190.  
  191.                   if (isSpecialChar(var8) && !var7) {
  192.                      throw new ParseException("Unquoted punctuation character : " + Integer.toString(var8, 16), var2);
  193.                   }
  194.  
  195.                   if (var6) {
  196.                      var4.append(var8);
  197.                   } else {
  198.                      var5.append(var8);
  199.                   }
  200.             }
  201.          }
  202.       }
  203.  
  204.       if (var3 == -1) {
  205.          return -1;
  206.       } else if (var4.length() == 0) {
  207.          throw new ParseException("missing chars (=,;<&): " + var1.substring(var2, var2 + 10 < var1.length() ? var2 + 10 : var1.length()), var2);
  208.       } else {
  209.          this.strength = var3;
  210.          this.chars = var4.toString();
  211.          this.extension = var5.toString();
  212.          return var2;
  213.       }
  214.    }
  215.  
  216.    static boolean isSpecialChar(char var0) {
  217.       return var0 <= '/' && var0 >= ' ' || var0 <= '?' && var0 >= ':' || var0 <= '`' && var0 >= '[' || var0 <= '~' && var0 >= '{';
  218.    }
  219.  
  220.    static void appendQuoted(String var0, StringBuffer var1) {
  221.       boolean var2 = false;
  222.       char var3 = var0.charAt(0);
  223.       if (Character.isSpaceChar(var3)) {
  224.          var2 = true;
  225.          var1.append('\'');
  226.       } else if (isSpecialChar(var3)) {
  227.          var2 = true;
  228.          var1.append('\'');
  229.       } else {
  230.          switch (var3) {
  231.             case '\t':
  232.             case '\n':
  233.             case '\f':
  234.             case '\r':
  235.             case '\u0010':
  236.             case '@':
  237.                var2 = true;
  238.                var1.append('\'');
  239.                break;
  240.             case '\'':
  241.                var2 = true;
  242.                var1.append('\'');
  243.                break;
  244.             default:
  245.                if (var2) {
  246.                   var2 = false;
  247.                   var1.append('\'');
  248.                }
  249.          }
  250.       }
  251.  
  252.       var1.append(var0);
  253.       if (var2) {
  254.          var1.append('\'');
  255.       }
  256.  
  257.    }
  258. }
  259.