Initial revision
[mir.git] / source / mir / misc / LineFilterWriter.java
1 package mir.misc;
2 import java.io.*;
3
4 /**
5  *  LineFilterWriter schneidet unsinnige \t \r \n ` ` raus
6  *
7  **/
8 public final class LineFilterWriter extends PrintWriter{//extends java.io.FilterWriter{
9
10
11   public LineFilterWriter(Writer out) {
12     super(out);
13   }
14
15   public final void write(String str){
16     int i,j,len;
17     boolean state=true;
18     char c;
19     len=str.length();
20     if (len==1) {try{out.write(str);}catch(IOException e){}return;}
21     StringBuffer sbuf = new StringBuffer();
22
23     for(i=0;i<len;i++) {
24       c=str.charAt(i);
25       if(state) {
26         j = str.indexOf('\n',i);
27         if (j==-1) j=len-1;
28                                 sbuf.append(str.substring(i,j+1));
29         i=j;
30         state=false;
31       }
32       else
33          if (!Character.isWhitespace(c)) {
34                                                 sbuf.append(c);
35             state=true;
36          }
37     }
38     try{out.write(sbuf.toString());}catch(IOException e){;}
39   }
40
41   public final void write(char[] cbuf, int off,int len){
42     int i,j=off;
43     boolean state=true;
44     char c;
45
46     for(i=off;i<len;i++) {
47       c=cbuf[i];
48       if(state) {
49         if (c=='\n') state=false;
50         cbuf[j++]=c;
51       }
52       else
53          if (!Character.isWhitespace(c)) {
54                                                 cbuf[j++]=c;
55             state=true;
56          }
57     }
58     try{out.write(cbuf,off,j);}catch(IOException e){;}
59   }
60
61
62 }