home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1999 November / PCONLINE_11_99.ISO / filesbbs / OS2 / APCHSSL2.ZIP / OS2HTTPD / jserv / com / kav / util / Tokenizer.class (.txt) < prev   
Encoding:
Java Class File  |  1999-05-16  |  1.8 KB  |  102 lines

  1. package com.kav.util;
  2.  
  3. public class Tokenizer {
  4.    public static final String[] DEFAULT_DELIMITERS = new String[]{" ", "\n", "\r", "\t"};
  5.    private String[] delimiters;
  6.    protected List tokens = new List();
  7.    private int currentIndex;
  8.    private String ntoken;
  9.  
  10.    public Tokenizer(String var1) {
  11.       this.delimiters = DEFAULT_DELIMITERS;
  12.       this.parsePattern(var1);
  13.    }
  14.  
  15.    public Tokenizer(String var1, String[] var2) {
  16.       this.delimiters = var2;
  17.       this.parsePattern(var1);
  18.    }
  19.  
  20.    public int countTokens() {
  21.       return this.tokens.size() - this.currentIndex;
  22.    }
  23.  
  24.    public boolean hasMoreTokens() {
  25.       return this.countTokens() > 0;
  26.    }
  27.  
  28.    public boolean hasToken(String var1) {
  29.       return this.tokens.contains(var1);
  30.    }
  31.  
  32.    public boolean isDelimiter(String var1) {
  33.       for(int var2 = 0; var2 < this.delimiters.length; ++var2) {
  34.          if (var1.equals(this.delimiters[var2])) {
  35.             return true;
  36.          }
  37.       }
  38.  
  39.       return false;
  40.    }
  41.  
  42.    public String nextToken() {
  43.       return this.currentIndex < this.tokens.size() ? (String)this.tokens.get(this.currentIndex++) : null;
  44.    }
  45.  
  46.    public String previousToken() {
  47.       return this.currentIndex > this.tokens.size() ? (String)this.tokens.get(--this.currentIndex) : null;
  48.    }
  49.  
  50.    public void resetPosition() {
  51.       this.currentIndex = 0;
  52.    }
  53.  
  54.    protected void setTokens(List var1) {
  55.       this.currentIndex = 0;
  56.       this.tokens = var1;
  57.    }
  58.  
  59.    private int indexOfNearestToken(String var1) {
  60.       int var2 = -1;
  61.       if (var1 == null) {
  62.          return var2;
  63.       } else {
  64.          String var4 = "";
  65.  
  66.          for(int var6 = 0; var6 < this.delimiters.length; ++var6) {
  67.             String var3 = this.delimiters[var6];
  68.             int var5 = var1.indexOf(var3);
  69.             if (var5 >= 0) {
  70.                if (var2 >= 0 && var5 >= var2) {
  71.                   if (var5 == var2 && var3.length() > var4.length()) {
  72.                      var4 = var3;
  73.                   }
  74.                } else {
  75.                   var2 = var5;
  76.                   var4 = var3;
  77.                }
  78.             }
  79.          }
  80.  
  81.          this.ntoken = var4;
  82.          return var2;
  83.       }
  84.    }
  85.  
  86.    private void parsePattern(String var1) {
  87.       int var3;
  88.       for(var3 = -1; (var3 = this.indexOfNearestToken(var1)) >= 0; var1 = var1.substring(var3 + this.ntoken.length())) {
  89.          if (var3 != 0) {
  90.             this.tokens.add(var1.substring(0, var3));
  91.          }
  92.  
  93.          this.tokens.add(this.ntoken);
  94.       }
  95.  
  96.       if (var1.length() > 0) {
  97.          this.tokens.add(var1);
  98.       }
  99.  
  100.    }
  101. }
  102.