JAL-1807 still testing
[jalviewjs.git] / unused / com / stevesoft / pat / RegexTokenizer.java
index 0378f3a..0e53857 100644 (file)
-//
-// This software is now distributed according to
-// the Lesser Gnu Public License.  Please see
-// http://www.gnu.org/copyleft/lesser.txt for
-// the details.
-//    -- Happy Computing!
-//
-package com.stevesoft.pat;
-
-import java.util.*;
-
-/**
- Shareware: package pat
- <a href="copyright.html">Copyright 2001, Steven R. Brandt</a>
- */
-/**
- * The RegexTokenizer is similar to the StringTokenizer class provided with
- * java, but allows one to tokenize using regular expressions, rather than a
- * simple list of characters. Tokens are any strings between the supplied
- * regular expression, as well as any backreferences (things in parenthesis)
- * contained within the regular expression.
- */
-public class RegexTokenizer implements Enumeration
-{
-  String toParse;
-
-  Regex r;
-
-  int count = 0;
-
-  Vector v = new Vector();
-
-  Vector vi = new Vector();
-
-  int pos = 0;
-
-  int offset = 1;
-
-  void getMore()
-  {
-    String s = r.right();
-    if (r.searchFrom(toParse, pos))
-    {
-      v.addElement(r.left().substring(pos));
-      vi.addElement(new Integer(r.matchFrom() + r.charsMatched()));
-      for (int i = 0; i < r.numSubs(); i++)
-      {
-        if (r.substring() != null)
-        {
-          v.addElement(r.substring(i + offset));
-          vi.addElement(new Integer(r.matchFrom(i + offset)
-                  + r.charsMatched(i + offset)));
-        }
-      }
-      pos = r.matchFrom() + r.charsMatched();
-    }
-    else if (s != null)
-    {
-      v.addElement(s);
-    }
-  }
-
-  /** Initialize the tokenizer with a string of text and a pattern */
-  public RegexTokenizer(String txt, String ptrn)
-  {
-    toParse = txt;
-    r = new Regex(ptrn);
-    offset = Regex.BackRefOffset;
-    getMore();
-  }
-
-  /** Initialize the tokenizer with a Regex object. */
-  public RegexTokenizer(String txt, Regex r)
-  {
-    toParse = txt;
-    this.r = r;
-    offset = Regex.BackRefOffset;
-    getMore();
-  }
-
-  /**
-   * This should always be cast to a String, as in StringTokenizer, and as in
-   * StringTokenizer one can do this by calling nextString().
-   */
-  public Object nextElement()
-  {
-    if (count >= v.size())
-    {
-      getMore();
-    }
-    return v.elementAt(count++);
-  }
-
-  /** This is the equivalent (String)nextElement(). */
-  public String nextToken()
-  {
-    return (String) nextElement();
-  }
-
-  /**
-   * This asks for the next token, and changes the pattern being used at the
-   * same time.
-   */
-  public String nextToken(String newpat)
-  {
-    try
-    {
-      r.compile(newpat);
-    } catch (RegSyntax r_)
-    {
-    }
-    return nextToken(r);
-  }
-
-  /**
-   * This asks for the next token, and changes the pattern being used at the
-   * same time.
-   */
-  public String nextToken(Regex nr)
-  {
-    r = nr;
-    if (vi.size() > count)
-    {
-      pos = ((Integer) vi.elementAt(count)).intValue();
-      v.setSize(count);
-      vi.setSize(count);
-    }
-    getMore();
-    return nextToken();
-  }
-
-  /** Tells whether there are more tokens in the pattern. */
-  public boolean hasMoreElements()
-  {
-    if (count >= v.size())
-    {
-      getMore();
-    }
-    return count < v.size();
-  }
-
-  /**
-   * Tells whether there are more tokens in the pattern, but in the fashion of
-   * StringTokenizer.
-   */
-  public boolean hasMoreTokens()
-  {
-    return hasMoreElements();
-  }
-
-  /** Determines the # of remaining tokens */
-  public int countTokens()
-  {
-    int _count = count;
-    while (hasMoreTokens())
-    {
-      nextToken();
-    }
-    count = _count;
-    return v.size() - count;
-  }
-
-  /** Returns all tokens in the String */
-  public String[] allTokens()
-  {
-    countTokens();
-    String[] ret = new String[v.size()];
-    v.copyInto(ret);
-    return ret;
-  }
-};
+//\r
+// This software is now distributed according to\r
+// the Lesser Gnu Public License.  Please see\r
+// http://www.gnu.org/copyleft/lesser.txt for\r
+// the details.\r
+//    -- Happy Computing!\r
+//\r
+package com.stevesoft.pat;\r
+\r
+import java.util.*;\r
+\r
+/**\r
+ Shareware: package pat\r
+ <a href="copyright.html">Copyright 2001, Steven R. Brandt</a>\r
+ */\r
+/**\r
+ * The RegexTokenizer is similar to the StringTokenizer class provided with\r
+ * java, but allows one to tokenize using regular expressions, rather than a\r
+ * simple list of characters. Tokens are any strings between the supplied\r
+ * regular expression, as well as any backreferences (things in parenthesis)\r
+ * contained within the regular expression.\r
+ */\r
+public class RegexTokenizer implements Enumeration\r
+{\r
+  String toParse;\r
+\r
+  Regex r;\r
+\r
+  int count = 0;\r
+\r
+  Vector v = new Vector();\r
+\r
+  Vector vi = new Vector();\r
+\r
+  int pos = 0;\r
+\r
+  int offset = 1;\r
+\r
+  void getMore()\r
+  {\r
+    String s = r.right();\r
+    if (r.searchFrom(toParse, pos))\r
+    {\r
+      v.addElement(r.left().substring(pos));\r
+      vi.addElement(new Integer(r.matchFrom() + r.charsMatched()));\r
+      for (int i = 0; i < r.numSubs(); i++)\r
+      {\r
+        if (r.substring() != null)\r
+        {\r
+          v.addElement(r.substring(i + offset));\r
+          vi.addElement(new Integer(r.matchFrom(i + offset)\r
+                  + r.charsMatched(i + offset)));\r
+        }\r
+      }\r
+      pos = r.matchFrom() + r.charsMatched();\r
+    }\r
+    else if (s != null)\r
+    {\r
+      v.addElement(s);\r
+    }\r
+  }\r
+\r
+  /** Initialize the tokenizer with a string of text and a pattern */\r
+  public RegexTokenizer(String txt, String ptrn)\r
+  {\r
+    toParse = txt;\r
+    r = new Regex(ptrn);\r
+    offset = Regex.BackRefOffset;\r
+    getMore();\r
+  }\r
+\r
+  /** Initialize the tokenizer with a Regex object. */\r
+  public RegexTokenizer(String txt, Regex r)\r
+  {\r
+    toParse = txt;\r
+    this.r = r;\r
+    offset = Regex.BackRefOffset;\r
+    getMore();\r
+  }\r
+\r
+  /**\r
+   * This should always be cast to a String, as in StringTokenizer, and as in\r
+   * StringTokenizer one can do this by calling nextString().\r
+   */\r
+  public Object nextElement()\r
+  {\r
+    if (count >= v.size())\r
+    {\r
+      getMore();\r
+    }\r
+    return v.elementAt(count++);\r
+  }\r
+\r
+  /** This is the equivalent (String)nextElement(). */\r
+  public String nextToken()\r
+  {\r
+    return (String) nextElement();\r
+  }\r
+\r
+  /**\r
+   * This asks for the next token, and changes the pattern being used at the\r
+   * same time.\r
+   */\r
+  public String nextToken(String newpat)\r
+  {\r
+    try\r
+    {\r
+      r.compile(newpat);\r
+    } catch (RegSyntax r_)\r
+    {\r
+    }\r
+    return nextToken(r);\r
+  }\r
+\r
+  /**\r
+   * This asks for the next token, and changes the pattern being used at the\r
+   * same time.\r
+   */\r
+  public String nextToken(Regex nr)\r
+  {\r
+    r = nr;\r
+    if (vi.size() > count)\r
+    {\r
+      pos = ((Integer) vi.elementAt(count)).intValue();\r
+      v.setSize(count);\r
+      vi.setSize(count);\r
+    }\r
+    getMore();\r
+    return nextToken();\r
+  }\r
+\r
+  /** Tells whether there are more tokens in the pattern. */\r
+  public boolean hasMoreElements()\r
+  {\r
+    if (count >= v.size())\r
+    {\r
+      getMore();\r
+    }\r
+    return count < v.size();\r
+  }\r
+\r
+  /**\r
+   * Tells whether there are more tokens in the pattern, but in the fashion of\r
+   * StringTokenizer.\r
+   */\r
+  public boolean hasMoreTokens()\r
+  {\r
+    return hasMoreElements();\r
+  }\r
+\r
+  /** Determines the # of remaining tokens */\r
+  public int countTokens()\r
+  {\r
+    int _count = count;\r
+    while (hasMoreTokens())\r
+    {\r
+      nextToken();\r
+    }\r
+    count = _count;\r
+    return v.size() - count;\r
+  }\r
+\r
+  /** Returns all tokens in the String */\r
+  public String[] allTokens()\r
+  {\r
+    countTokens();\r
+    String[] ret = new String[v.size()];\r
+    v.copyInto(ret);\r
+    return ret;\r
+  }\r
+};\r