home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1997 May / PCO_5_97.ISO / FilesBBS / OS2 / CSIME.ARJ / CSIME.ZIP / csime / mug / util / HTMLStreamTokenizer.class (.txt) < prev   
Encoding:
Java Class File  |  1997-02-09  |  3.5 KB  |  179 lines

  1. package mug.util;
  2.  
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.io.StreamTokenizer;
  6. import java.util.Hashtable;
  7.  
  8. public class HTMLStreamTokenizer {
  9.    public static final int EOF = 0;
  10.    public static final int TAG = 1;
  11.    public static final int TEXT = 2;
  12.    private int _type;
  13.    private String _value;
  14.    private Hashtable _params;
  15.    private boolean _pushedBack = false;
  16.    private StreamTokenizer _st;
  17.  
  18.    public HTMLStreamTokenizer(InputStream var1) {
  19.       this._st = new StreamTokenizer(var1);
  20.       this._st.resetSyntax();
  21.       this._st.whitespaceChars(0, 32);
  22.       this._st.wordChars(33, 33);
  23.       this._st.wordChars(35, 59);
  24.       this._st.wordChars(63, 255);
  25.       this._st.quoteChar(34);
  26.    }
  27.  
  28.    public int getType() {
  29.       return this._type;
  30.    }
  31.  
  32.    public String getValue() {
  33.       return this._value;
  34.    }
  35.  
  36.    public Hashtable getParams() {
  37.       return this._params;
  38.    }
  39.  
  40.    public String getParamValue(String var1) {
  41.       String var2 = var1.toUpperCase();
  42.       if (this._params.containsKey(var2)) {
  43.          return (String)this._params.get(var2);
  44.       } else {
  45.          String var3 = var1.toLowerCase();
  46.          return this._params.containsKey(var3) ? (String)this._params.get(var3) : null;
  47.       }
  48.    }
  49.  
  50.    public boolean containsParamName(String var1) {
  51.       String var2 = var1.toUpperCase();
  52.       String var3 = var1.toLowerCase();
  53.       return this._params.containsKey(var2) || this._params.containsKey(var3);
  54.    }
  55.  
  56.    public int nextToken() throws IOException {
  57.       if (this._pushedBack) {
  58.          this._pushedBack = false;
  59.          return this._type;
  60.       } else {
  61.          try {
  62.             String var1;
  63.             if ((var1 = this.nextStreamToken()) == null) {
  64.                return 0;
  65.             }
  66.  
  67.             if (var1.equals("<")) {
  68.                var1 = this.nextStreamToken();
  69.                if (var1.startsWith("!")) {
  70.                   while((var1 = this.nextStreamToken()) != null && !var1.equals(">")) {
  71.                   }
  72.  
  73.                   return this.nextToken();
  74.                }
  75.  
  76.                this._type = 1;
  77.                this._value = var1;
  78.                this._params = new Hashtable();
  79.  
  80.                while((var1 = this.nextStreamToken()) != null && !var1.equals(">")) {
  81.                   String var2 = var1;
  82.                   var1 = this.nextStreamToken();
  83.                   if (var1.equals("=")) {
  84.                      String var3 = this.nextStreamToken();
  85.                      this._params.put(var2, var3);
  86.                   } else {
  87.                      this._params.put(var2, var2);
  88.                      this._st.pushBack();
  89.                   }
  90.                }
  91.             } else {
  92.                this._type = 2;
  93.                StringBuffer var10 = new StringBuffer(var1);
  94.  
  95.                while((var1 = this.nextStreamToken()) != null) {
  96.                   if (var1.equals("<")) {
  97.                      this._st.pushBack();
  98.                      break;
  99.                   }
  100.  
  101.                   var10.append(" " + var1);
  102.                }
  103.  
  104.                this._value = var10.toString();
  105.             }
  106.          } catch (IOException var4) {
  107.             throw (IOException)((Throwable)var4).fillInStackTrace();
  108.          }
  109.  
  110.          return this._type;
  111.       }
  112.    }
  113.  
  114.    public void pushBack() {
  115.       this._pushedBack = true;
  116.    }
  117.  
  118.    public boolean nextTag() {
  119.       return this.nextTag((String)null);
  120.    }
  121.  
  122.    public boolean nextTag(String var1) {
  123.       int var2;
  124.       try {
  125.          while((var2 = this.nextToken()) != 0) {
  126.             if (var2 == 1 && (var1 == null || this._value.equalsIgnoreCase(var1))) {
  127.                return true;
  128.             }
  129.          }
  130.       } catch (IOException var3) {
  131.          System.out.println("Caught an exception: " + ((Throwable)var3).getMessage());
  132.          ((Throwable)var3).printStackTrace();
  133.       }
  134.  
  135.       return false;
  136.    }
  137.  
  138.    public boolean compareTag(String var1) {
  139.       return this._type == 1 && this._value.equalsIgnoreCase(var1);
  140.    }
  141.  
  142.    public boolean nextText() {
  143.       int var1;
  144.       try {
  145.          while((var1 = this.nextToken()) != 0) {
  146.             if (var1 == 2) {
  147.                return true;
  148.             }
  149.          }
  150.       } catch (IOException var2) {
  151.          System.out.println("Caught an exception: " + ((Throwable)var2).getMessage());
  152.          ((Throwable)var2).printStackTrace();
  153.       }
  154.  
  155.       return false;
  156.    }
  157.  
  158.    private String nextStreamToken() throws IOException {
  159.       String var1 = null;
  160.  
  161.       try {
  162.          int var2 = this._st.nextToken();
  163.          switch (var2) {
  164.             case -3:
  165.             case 34:
  166.                var1 = this._st.sval;
  167.             case -1:
  168.                break;
  169.             default:
  170.                var1 = String.valueOf((char)var2);
  171.          }
  172.  
  173.          return var1;
  174.       } catch (IOException var3) {
  175.          throw (IOException)((Throwable)var3).fillInStackTrace();
  176.       }
  177.    }
  178. }
  179.