Formatting
[jalview.git] / src / com / stevesoft / pat / RegexWriter.java
index 008f6ac..bcfbd5b 100755 (executable)
@@ -8,6 +8,7 @@
 package com.stevesoft.pat;\r
 \r
 import java.io.*;\r
+\r
 import com.stevesoft.pat.wrap.*;\r
 \r
 /** A basic extension of FilterWriter that uses Transformer\r
@@ -34,171 +35,232 @@ import com.stevesoft.pat.wrap.*;
  An illustration of this is given in the this\r
  <a href="../test/trans.java">example.</a>\r
  */\r
-public class RegexWriter extends Writer {\r
-    Replacer repr;\r
-    Writer w;\r
-    WriterWrap ww;\r
-    StringBuffer sb = new StringBuffer();\r
-    PartialBuffer wrap = new PartialBuffer(sb);\r
-    int pos, epos;\r
-    int interval = 128;\r
-    int bufferSize = 2*1024;\r
-\r
-    public RegexWriter(Transformer t,Writer w) {\r
-       this.w = w;\r
-        ww = new WriterWrap(w);\r
-        repr = t.getReplacer();\r
-       repr.setBuffer(new StringBufferLike(ww));\r
-       repr.setSource(wrap);\r
-    }\r
-    public RegexWriter(Regex r,Writer w) {\r
-       this.w = w;\r
-        ww = new WriterWrap(w);\r
-        repr = r.getReplacer();\r
-       repr.setBuffer(new StringBufferLike(ww));\r
-       repr.setSource(wrap);\r
-    }\r
+public class RegexWriter\r
+    extends Writer\r
+{\r
+  Replacer repr;\r
+  Writer w;\r
+  WriterWrap ww;\r
+  StringBuffer sb = new StringBuffer();\r
+  PartialBuffer wrap = new PartialBuffer(sb);\r
+  int pos, epos;\r
+  int interval = 128;\r
+  int bufferSize = 2 * 1024;\r
 \r
-    char EOLchar = '\n';\r
-    /** This method no longer serves any purpose.\r
-        @deprecated\r
-      */\r
-    public char getEOLchar() {\r
-        return EOLchar;\r
-    }\r
-    /** This method no longer serves any purpose.\r
-     @deprecated\r
-     */\r
-    public void setEOLchar(char c) {\r
-        EOLchar = c;\r
-    }\r
+  public RegexWriter(Transformer t, Writer w)\r
+  {\r
+    this.w = w;\r
+    ww = new WriterWrap(w);\r
+    repr = t.getReplacer();\r
+    repr.setBuffer(new StringBufferLike(ww));\r
+    repr.setSource(wrap);\r
+  }\r
+\r
+  public RegexWriter(Regex r, Writer w)\r
+  {\r
+    this.w = w;\r
+    ww = new WriterWrap(w);\r
+    repr = r.getReplacer();\r
+    repr.setBuffer(new StringBufferLike(ww));\r
+    repr.setSource(wrap);\r
+  }\r
+\r
+  char EOLchar = '\n';\r
+  /** This method no longer serves any purpose.\r
+      @deprecated\r
+   */\r
+  public char getEOLchar()\r
+  {\r
+    return EOLchar;\r
+  }\r
 \r
-    int max_lines=2;\r
-    /** This method no longer serves any purpose.\r
-     @deprecated\r
-     */\r
-    public int getMaxLines() { return max_lines; }\r
-    /** This method no longer serves any purpose.\r
-     @deprecated\r
-     */\r
-    public void setMaxLines(int ml) { max_lines = ml; }\r
-\r
-    void write() throws IOException {\r
-      Regex rex = repr.getRegex();\r
-      int eposOld = epos;\r
-      if(rex.matchAt(wrap,epos) && !wrap.overRun) {\r
-        while(pos < epos)\r
-          w.write(sb.charAt(pos++));\r
-        int to = rex.matchedTo();\r
-       repr.setPos(to);\r
-       repr.apply(rex,rex.getReplaceRule());\r
-       epos = pos = to;\r
-       if(epos == eposOld && epos < sb.length())\r
-         epos++;\r
-      } else if(!wrap.overRun && epos < sb.length()) {\r
+  /** This method no longer serves any purpose.\r
+   @deprecated\r
+   */\r
+  public void setEOLchar(char c)\r
+  {\r
+    EOLchar = c;\r
+  }\r
+\r
+  int max_lines = 2;\r
+  /** This method no longer serves any purpose.\r
+   @deprecated\r
+   */\r
+  public int getMaxLines()\r
+  {\r
+    return max_lines;\r
+  }\r
+\r
+  /** This method no longer serves any purpose.\r
+   @deprecated\r
+   */\r
+  public void setMaxLines(int ml)\r
+  {\r
+    max_lines = ml;\r
+  }\r
+\r
+  void write()\r
+      throws IOException\r
+  {\r
+    Regex rex = repr.getRegex();\r
+    int eposOld = epos;\r
+    if (rex.matchAt(wrap, epos) && !wrap.overRun)\r
+    {\r
+      while (pos < epos)\r
+      {\r
+        w.write(sb.charAt(pos++));\r
+      }\r
+      int to = rex.matchedTo();\r
+      repr.setPos(to);\r
+      repr.apply(rex, rex.getReplaceRule());\r
+      epos = pos = to;\r
+      if (epos == eposOld && epos < sb.length())\r
+      {\r
         epos++;\r
       }\r
-      while(pos < epos)\r
-        w.write(sb.charAt(pos++));\r
-      if(epos == sb.length()) {\r
-       sb.setLength(1);\r
-       pos = epos = 1;\r
-      } else if(pos > bufferSize) {\r
-        for(int i=bufferSize;i<sb.length();i++)\r
-         sb.setCharAt(i-bufferSize,sb.charAt(i));\r
-        pos -= bufferSize;\r
-       epos -= bufferSize;\r
-       sb.setLength(sb.length()-bufferSize);\r
+    }\r
+    else if (!wrap.overRun && epos < sb.length())\r
+    {\r
+      epos++;\r
+    }\r
+    while (pos < epos)\r
+    {\r
+      w.write(sb.charAt(pos++));\r
+    }\r
+    if (epos == sb.length())\r
+    {\r
+      sb.setLength(1);\r
+      pos = epos = 1;\r
+    }\r
+    else if (pos > bufferSize)\r
+    {\r
+      for (int i = bufferSize; i < sb.length(); i++)\r
+      {\r
+        sb.setCharAt(i - bufferSize, sb.charAt(i));\r
       }\r
+      pos -= bufferSize;\r
+      epos -= bufferSize;\r
+      sb.setLength(sb.length() - bufferSize);\r
     }\r
+  }\r
 \r
-    public void write(char[] ca,int b,int n) throws IOException {\r
-      int m = b+n;\r
-      for(int i=b;i<m;i++) {\r
-        sb.append(ca[i]);\r
-       if(sb.length() % interval == interval - 1) {\r
-         wrap.overRun = false;\r
-          while(epos+interval < sb.length() && !wrap.overRun) {\r
-            write();\r
-         }\r
+  public void write(char[] ca, int b, int n)\r
+      throws IOException\r
+  {\r
+    int m = b + n;\r
+    for (int i = b; i < m; i++)\r
+    {\r
+      sb.append(ca[i]);\r
+      if (sb.length() % interval == interval - 1)\r
+      {\r
+        wrap.overRun = false;\r
+        while (epos + interval < sb.length() && !wrap.overRun)\r
+        {\r
+          write();\r
         }\r
       }\r
     }\r
+  }\r
 \r
-    public void flush() throws IOException {\r
-    }\r
+  public void flush()\r
+      throws IOException\r
+  {\r
+  }\r
 \r
-    public void close() throws IOException {\r
-       wrap.allowOverRun = false;\r
-       wrap.overRun = false;\r
-       while(epos < sb.length())\r
-         write();\r
-       write();\r
-       w.close();\r
+  public void close()\r
+      throws IOException\r
+  {\r
+    wrap.allowOverRun = false;\r
+    wrap.overRun = false;\r
+    while (epos < sb.length())\r
+    {\r
+      write();\r
     }\r
+    write();\r
+    w.close();\r
+  }\r
 \r
-    /** The current size of the StringBuffer in use by RegexWriter. */\r
-    public int length() { return sb.length(); }\r
+  /** The current size of the StringBuffer in use by RegexWriter. */\r
+  public int length()\r
+  {\r
+    return sb.length();\r
+  }\r
 \r
-    /** The character at location i in the StringBuffer. */\r
-    public char charAt(int i) { return sb.charAt(i); }\r
+  /** The character at location i in the StringBuffer. */\r
+  public char charAt(int i)\r
+  {\r
+    return sb.charAt(i);\r
+  }\r
 \r
-    /** Set the interval at which regex patterns are checked. */\r
-    public void setInterval(int i) {\r
-      interval = i;\r
-    }\r
+  /** Set the interval at which regex patterns are checked. */\r
+  public void setInterval(int i)\r
+  {\r
+    interval = i;\r
+  }\r
 \r
-    /** Get the interval at which regex matches are checked. */\r
-    public int getInterval() {\r
-      return interval;\r
-    }\r
+  /** Get the interval at which regex matches are checked. */\r
+  public int getInterval()\r
+  {\r
+    return interval;\r
+  }\r
 \r
-    /** Get the buffer size. */\r
-    public int getBufferSize() {\r
-      return bufferSize;\r
-    }\r
+  /** Get the buffer size. */\r
+  public int getBufferSize()\r
+  {\r
+    return bufferSize;\r
+  }\r
 \r
-    /** Set the buffer size. */\r
-    public void setBufferSize(int i) {\r
-      bufferSize = i;\r
-    }\r
+  /** Set the buffer size. */\r
+  public void setBufferSize(int i)\r
+  {\r
+    bufferSize = i;\r
+  }\r
 \r
-  static void test(String re,String inp,int n) throws Exception {\r
+  static void test(String re, String inp, int n)\r
+      throws Exception\r
+  {\r
     StringWriter sw = new StringWriter();\r
     Regex rex = Regex.perlCode(re);\r
     String res1 = rex.replaceAll(inp);\r
-    RegexWriter rw = new RegexWriter(rex,sw);\r
-    for(int i=0;i<inp.length();i++)\r
+    RegexWriter rw = new RegexWriter(rex, sw);\r
+    for (int i = 0; i < inp.length(); i++)\r
+    {\r
       rw.write(inp.charAt(i));\r
+    }\r
     rw.close();\r
     String res2 = sw.toString();\r
-    if(!res1.equals(res2)) {\r
-      System.out.println("nmax="+n);\r
-      System.out.println("re="+re);\r
-      System.out.println("inp="+inp);\r
-      System.out.println("res1="+res1);\r
-      System.out.println("res2="+res2);\r
+    if (!res1.equals(res2))\r
+    {\r
+      System.out.println("nmax=" + n);\r
+      System.out.println("re=" + re);\r
+      System.out.println("inp=" + inp);\r
+      System.out.println("res1=" + res1);\r
+      System.out.println("res2=" + res2);\r
       System.exit(255);\r
     }\r
   }\r
-  public static void main(String[] args) throws Exception {\r
-    for(int n=1;n<=1;n++) {\r
-      test("s/x/y/","-----x123456789",n);\r
-      test("s/x/y/","x123456789",n);\r
-      test("s/x/y/","-----x",n);\r
-      test("s/x.*?x/y/",".xx..x..x...x...x....x....x",n);\r
-      test("s/x.*x/[$&]/","--x........x--xx",n);\r
-      test("s/x.*x/[$&]/","--x........x------",n);\r
-      test("s/.$/a/m","bb\nbbb\nbbbb\nbbbbb\nbbbbbb\nbbbbbbbbbbbb",n);\r
-      test("s/.$/a/","123",n);\r
-      test("s/.$/a/","bb\nbbb\nbbbb\nbbbbb\nbbbbbb\nbb",n);\r
-      test("s/^./a/","bb\nbbb\nbbbb\nbbbbb\nbbbbbb\nbb",n);\r
-      test("s/$/a/","bbb",n);\r
-      test("s/^/a/","bbb",n);\r
-      test("s/^/a/","",n);\r
-      test("s{.*}{N}","xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",n);\r
-      test("s/.{0,7}/y/","AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",n);\r
-      test("s/x/$&/","xxx",n);\r
+\r
+  public static void main(String[] args)\r
+      throws Exception\r
+  {\r
+    for (int n = 1; n <= 1; n++)\r
+    {\r
+      test("s/x/y/", "-----x123456789", n);\r
+      test("s/x/y/", "x123456789", n);\r
+      test("s/x/y/", "-----x", n);\r
+      test("s/x.*?x/y/", ".xx..x..x...x...x....x....x", n);\r
+      test("s/x.*x/[$&]/", "--x........x--xx", n);\r
+      test("s/x.*x/[$&]/", "--x........x------", n);\r
+      test("s/.$/a/m", "bb\nbbb\nbbbb\nbbbbb\nbbbbbb\nbbbbbbbbbbbb", n);\r
+      test("s/.$/a/", "123", n);\r
+      test("s/.$/a/", "bb\nbbb\nbbbb\nbbbbb\nbbbbbb\nbb", n);\r
+      test("s/^./a/", "bb\nbbb\nbbbb\nbbbbb\nbbbbbb\nbb", n);\r
+      test("s/$/a/", "bbb", n);\r
+      test("s/^/a/", "bbb", n);\r
+      test("s/^/a/", "", n);\r
+      test("s{.*}{N}", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", n);\r
+      test("s/.{0,7}/y/", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", n);\r
+      test("s/x/$&/", "xxx", n);\r
     }\r
     System.out.println("Success!!!");\r
   }\r