X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fcom%2Fstevesoft%2Fpat%2FRegexWriter.java;fp=src%2Fcom%2Fstevesoft%2Fpat%2FRegexWriter.java;h=bcfbd5b62348c1ffbf5a11d73967aa1a526f398e;hb=7bc226b58110fa26d9dbd3f0c78095d06909ffc3;hp=008f6ac1261302d0648b9d96104f32b0ae40e116;hpb=dd74fc4938723fe5ec48d4e5fdcfbe58ac42a48d;p=jalview.git
diff --git a/src/com/stevesoft/pat/RegexWriter.java b/src/com/stevesoft/pat/RegexWriter.java
index 008f6ac..bcfbd5b 100755
--- a/src/com/stevesoft/pat/RegexWriter.java
+++ b/src/com/stevesoft/pat/RegexWriter.java
@@ -8,6 +8,7 @@
package com.stevesoft.pat;
import java.io.*;
+
import com.stevesoft.pat.wrap.*;
/** A basic extension of FilterWriter that uses Transformer
@@ -34,171 +35,232 @@ import com.stevesoft.pat.wrap.*;
An illustration of this is given in the this
example.
*/
-public class RegexWriter extends Writer {
- Replacer repr;
- Writer w;
- WriterWrap ww;
- StringBuffer sb = new StringBuffer();
- PartialBuffer wrap = new PartialBuffer(sb);
- int pos, epos;
- int interval = 128;
- int bufferSize = 2*1024;
-
- public RegexWriter(Transformer t,Writer w) {
- this.w = w;
- ww = new WriterWrap(w);
- repr = t.getReplacer();
- repr.setBuffer(new StringBufferLike(ww));
- repr.setSource(wrap);
- }
- public RegexWriter(Regex r,Writer w) {
- this.w = w;
- ww = new WriterWrap(w);
- repr = r.getReplacer();
- repr.setBuffer(new StringBufferLike(ww));
- repr.setSource(wrap);
- }
+public class RegexWriter
+ extends Writer
+{
+ Replacer repr;
+ Writer w;
+ WriterWrap ww;
+ StringBuffer sb = new StringBuffer();
+ PartialBuffer wrap = new PartialBuffer(sb);
+ int pos, epos;
+ int interval = 128;
+ int bufferSize = 2 * 1024;
- char EOLchar = '\n';
- /** This method no longer serves any purpose.
- @deprecated
- */
- public char getEOLchar() {
- return EOLchar;
- }
- /** This method no longer serves any purpose.
- @deprecated
- */
- public void setEOLchar(char c) {
- EOLchar = c;
- }
+ public RegexWriter(Transformer t, Writer w)
+ {
+ this.w = w;
+ ww = new WriterWrap(w);
+ repr = t.getReplacer();
+ repr.setBuffer(new StringBufferLike(ww));
+ repr.setSource(wrap);
+ }
+
+ public RegexWriter(Regex r, Writer w)
+ {
+ this.w = w;
+ ww = new WriterWrap(w);
+ repr = r.getReplacer();
+ repr.setBuffer(new StringBufferLike(ww));
+ repr.setSource(wrap);
+ }
+
+ char EOLchar = '\n';
+ /** This method no longer serves any purpose.
+ @deprecated
+ */
+ public char getEOLchar()
+ {
+ return EOLchar;
+ }
- int max_lines=2;
- /** This method no longer serves any purpose.
- @deprecated
- */
- public int getMaxLines() { return max_lines; }
- /** This method no longer serves any purpose.
- @deprecated
- */
- public void setMaxLines(int ml) { max_lines = ml; }
-
- void write() throws IOException {
- Regex rex = repr.getRegex();
- int eposOld = epos;
- if(rex.matchAt(wrap,epos) && !wrap.overRun) {
- while(pos < epos)
- w.write(sb.charAt(pos++));
- int to = rex.matchedTo();
- repr.setPos(to);
- repr.apply(rex,rex.getReplaceRule());
- epos = pos = to;
- if(epos == eposOld && epos < sb.length())
- epos++;
- } else if(!wrap.overRun && epos < sb.length()) {
+ /** This method no longer serves any purpose.
+ @deprecated
+ */
+ public void setEOLchar(char c)
+ {
+ EOLchar = c;
+ }
+
+ int max_lines = 2;
+ /** This method no longer serves any purpose.
+ @deprecated
+ */
+ public int getMaxLines()
+ {
+ return max_lines;
+ }
+
+ /** This method no longer serves any purpose.
+ @deprecated
+ */
+ public void setMaxLines(int ml)
+ {
+ max_lines = ml;
+ }
+
+ void write()
+ throws IOException
+ {
+ Regex rex = repr.getRegex();
+ int eposOld = epos;
+ if (rex.matchAt(wrap, epos) && !wrap.overRun)
+ {
+ while (pos < epos)
+ {
+ w.write(sb.charAt(pos++));
+ }
+ int to = rex.matchedTo();
+ repr.setPos(to);
+ repr.apply(rex, rex.getReplaceRule());
+ epos = pos = to;
+ if (epos == eposOld && epos < sb.length())
+ {
epos++;
}
- while(pos < epos)
- w.write(sb.charAt(pos++));
- if(epos == sb.length()) {
- sb.setLength(1);
- pos = epos = 1;
- } else if(pos > bufferSize) {
- for(int i=bufferSize;i bufferSize)
+ {
+ for (int i = bufferSize; i < sb.length(); i++)
+ {
+ sb.setCharAt(i - bufferSize, sb.charAt(i));
}
+ pos -= bufferSize;
+ epos -= bufferSize;
+ sb.setLength(sb.length() - bufferSize);
}
+ }
- public void write(char[] ca,int b,int n) throws IOException {
- int m = b+n;
- for(int i=b;i