JAL-2629 evalues and bit scores now conserved after hmmalign is run
[jalview.git] / src / com / stevesoft / pat / RegexTokenizer.java
index bc6fe51..c99bfea 100755 (executable)
-//\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
-import java.util.*;\r
-/** \r
-        Shareware: package pat\r
-   <a href="copyright.html">Copyright 2001, Steven R. Brandt</a>\r
-*/ /**\r
-The RegexTokenizer is similar to the StringTokenizer class\r
-provided with java, but allows one to tokenize using\r
-regular expressions, rather than a simple list of characters.\r
-Tokens are any strings between the supplied regular expression,\r
-as well as any backreferences (things in parenthesis)\r
-contained within the regular expression. */\r
-public class RegexTokenizer implements Enumeration {\r
-    String toParse;\r
-    Regex r;\r
-    int count = 0;\r
-    Vector v = new Vector();\r
-    Vector vi = new Vector();\r
-    int pos=0;\r
-\r
-    int offset = 1;\r
-    void getMore() {\r
-        String s = r.right();\r
-        if(r.searchFrom(toParse,pos)) {\r
-            v.addElement(r.left().substring(pos));\r
-            vi.addElement(new Integer(r.matchFrom()+\r
-                r.charsMatched()));\r
-            for(int i=0;i<r.numSubs();i++)\r
-                if(r.substring() != null) {\r
-                    v.addElement(r.substring(i+offset));\r
-                    vi.addElement(\r
-                        new Integer(r.matchFrom(i+offset)+\r
-                        r.charsMatched(i+offset)));\r
-                }\r
-            pos = r.matchFrom()+r.charsMatched();\r
-        } else if(s != null) v.addElement(s);\r
-    }\r
-\r
-    /** Initialize the tokenizer with a string of text and a pattern */\r
-    public RegexTokenizer(String txt,String ptrn) {\r
-        toParse = txt;\r
-        r = new Regex(ptrn);\r
-        offset = Regex.BackRefOffset;\r
-        getMore();\r
-    }\r
-    /** Initialize the tokenizer with a Regex object. */\r
-    public RegexTokenizer(String txt,Regex r) {\r
-        toParse = txt;\r
-        this.r = r;\r
-        offset = Regex.BackRefOffset;\r
-        getMore();\r
-    }\r
-    /** This should always be cast to a String, as in StringTokenizer,\r
-         and as in StringTokenizer one can do this by calling\r
-         nextString(). */\r
-    public Object nextElement() {\r
-        if(count >= v.size()) getMore();\r
-        return v.elementAt(count++);\r
-    }\r
-    /** This is the equivalent (String)nextElement(). */\r
-    public String nextToken() { return (String)nextElement(); }\r
-    /** This asks for the next token, and changes the pattern\r
-         being used at the same time. */\r
-    public String nextToken(String newpat) {\r
-        try { r.compile(newpat); } catch (RegSyntax r_) {}\r
-        return nextToken(r);\r
-    }\r
-    /** This asks for the next token, and changes the pattern\r
-         being used at the same time. */\r
-    public String nextToken(Regex nr) {\r
-        r = nr;\r
-        if(vi.size() > count) {\r
-            pos = ((Integer)vi.elementAt(count)).intValue();\r
-            v.setSize(count);\r
-            vi.setSize(count);\r
-        }\r
-        getMore();\r
-        return nextToken();\r
-    }\r
-    /** Tells whether there are more tokens in the pattern. */\r
-    public boolean hasMoreElements() {\r
-        if(count >= v.size()) getMore();\r
-        return count < v.size();\r
-    }\r
-    /** Tells whether there are more tokens in the pattern, but\r
-         in the fashion of StringTokenizer. */\r
-    public boolean hasMoreTokens() { return hasMoreElements(); }\r
-    /** Determines the # of remaining tokens */\r
-    public int countTokens() {\r
-        int _count=count;\r
-        while(hasMoreTokens())\r
-            nextToken();\r
-        count=_count;\r
-        return v.size()-count;\r
-    }\r
-    /** Returns all tokens in the String */\r
-    public String[] allTokens() {\r
-        countTokens();\r
-        String[] ret = new String[v.size()];\r
-        v.copyInto(ret);\r
-        return ret;\r
-    }\r
-};\r
+//
+// 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.Enumeration;
+import java.util.Vector;
+
+/**
+ 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(Integer.valueOf(r.matchFrom() + r.charsMatched()));
+      for (int i = 0; i < r.numSubs(); i++)
+      {
+        if (r.substring() != null)
+        {
+          v.addElement(r.substring(i + offset));
+          vi.addElement(Integer.valueOf(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;
+  }
+};