home *** CD-ROM | disk | FTP | other *** search
/ Symantec Visual Cafe for Java 2.5 / symantec-visual-cafe-2.5-database-dev-edition.iso / VPage / Java.bin / CLASSES.ZIP / sun / net / www / HeaderParser.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-07-08  |  2.1 KB  |  140 lines

  1. package sun.net.www;
  2.  
  3. public class HeaderParser {
  4.    String raw;
  5.    String[][] tab;
  6.  
  7.    public HeaderParser(String var1) {
  8.       this.raw = var1;
  9.       this.tab = new String[10][2];
  10.       this.parse();
  11.    }
  12.  
  13.    private void parse() {
  14.       if (this.raw != null) {
  15.          this.raw = this.raw.trim();
  16.          char[] var1 = this.raw.toCharArray();
  17.          int var2 = 0;
  18.          int var3 = 0;
  19.          int var4 = 0;
  20.          boolean var5 = true;
  21.          boolean var6 = false;
  22.          int var7 = var1.length;
  23.  
  24.          while(var3 < var7) {
  25.             char var8 = var1[var3];
  26.             if (var8 == '=') {
  27.                this.tab[var4][0] = (new String(var1, var2, var3 - var2)).toLowerCase();
  28.                var5 = false;
  29.                ++var3;
  30.                var2 = var3;
  31.             } else if (var8 == '"') {
  32.                if (!var6) {
  33.                   var6 = true;
  34.                   ++var3;
  35.                   var2 = var3;
  36.                } else {
  37.                   this.tab[var4++][1] = new String(var1, var2, var3 - var2);
  38.                   var6 = false;
  39.  
  40.                   do {
  41.                      ++var3;
  42.                   } while(var3 < var7 && (var1[var3] == ' ' || var1[var3] == ','));
  43.  
  44.                   var5 = true;
  45.                   var2 = var3;
  46.                }
  47.             } else if (var8 != ' ' && var8 != ',') {
  48.                ++var3;
  49.             } else if (var6) {
  50.                ++var3;
  51.             } else {
  52.                if (var5) {
  53.                   this.tab[var4++][0] = (new String(var1, var2, var3 - var2)).toLowerCase();
  54.                } else {
  55.                   this.tab[var4++][1] = new String(var1, var2, var3 - var2);
  56.                }
  57.  
  58.                while(var3 < var7 && (var1[var3] == ' ' || var1[var3] == ',')) {
  59.                   ++var3;
  60.                }
  61.  
  62.                var5 = true;
  63.                var2 = var3;
  64.             }
  65.          }
  66.  
  67.          --var3;
  68.          if (var3 > var2) {
  69.             if (!var5) {
  70.                if (var1[var3] == '"') {
  71.                   this.tab[var4++][1] = new String(var1, var2, var3 - var2);
  72.                   return;
  73.                }
  74.  
  75.                this.tab[var4++][1] = new String(var1, var2, var3 - var2 + 1);
  76.                return;
  77.             }
  78.  
  79.             this.tab[var4][0] = (new String(var1, var2, var3 - var2 + 1)).toLowerCase();
  80.             return;
  81.          }
  82.  
  83.          if (var3 == var2) {
  84.             if (!var5) {
  85.                if (var1[var3] == '"') {
  86.                   this.tab[var4++][1] = String.valueOf(var1[var3 - 1]);
  87.                   return;
  88.                }
  89.  
  90.                this.tab[var4++][1] = String.valueOf(var1[var3]);
  91.                return;
  92.             }
  93.  
  94.             this.tab[var4][0] = String.valueOf(var1[var3]).toLowerCase();
  95.          }
  96.       }
  97.  
  98.    }
  99.  
  100.    public String findKey(int var1) {
  101.       return var1 >= 0 && var1 <= 10 ? this.tab[var1][0] : null;
  102.    }
  103.  
  104.    public String findValue(int var1) {
  105.       return var1 >= 0 && var1 <= 10 ? this.tab[var1][1] : null;
  106.    }
  107.  
  108.    public String findValue(String var1) {
  109.       return this.findValue(var1, (String)null);
  110.    }
  111.  
  112.    public String findValue(String var1, String var2) {
  113.       if (var1 == null) {
  114.          return var2;
  115.       } else {
  116.          var1.toLowerCase();
  117.  
  118.          for(int var3 = 0; var3 < 10; ++var3) {
  119.             if (this.tab[var3][0] == null) {
  120.                return var2;
  121.             }
  122.  
  123.             if (var1.equals(this.tab[var3][0])) {
  124.                return this.tab[var3][1];
  125.             }
  126.          }
  127.  
  128.          return var2;
  129.       }
  130.    }
  131.  
  132.    public int findInt(String var1, int var2) {
  133.       try {
  134.          return Integer.parseInt(this.findValue(var1, String.valueOf(var2)));
  135.       } catch (Throwable var3) {
  136.          return var2;
  137.       }
  138.    }
  139. }
  140.