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