Initial revision
[mir.git] / source / mir / misc / LineFilterWriter.java
diff --git a/source/mir/misc/LineFilterWriter.java b/source/mir/misc/LineFilterWriter.java
new file mode 100755 (executable)
index 0000000..960c29b
--- /dev/null
@@ -0,0 +1,62 @@
+package mir.misc;
+import java.io.*;
+
+/**
+ *  LineFilterWriter schneidet unsinnige \t \r \n ` ` raus
+ *
+ **/
+public final class LineFilterWriter extends PrintWriter{//extends java.io.FilterWriter{
+
+
+  public LineFilterWriter(Writer out) {
+    super(out);
+  }
+
+  public final void write(String str){
+    int i,j,len;
+    boolean state=true;
+    char c;
+    len=str.length();
+    if (len==1) {try{out.write(str);}catch(IOException e){}return;}
+    StringBuffer sbuf = new StringBuffer();
+
+    for(i=0;i<len;i++) {
+      c=str.charAt(i);
+      if(state) {
+        j = str.indexOf('\n',i);
+        if (j==-1) j=len-1;
+                               sbuf.append(str.substring(i,j+1));
+        i=j;
+        state=false;
+      }
+      else
+         if (!Character.isWhitespace(c)) {
+                                               sbuf.append(c);
+            state=true;
+         }
+    }
+    try{out.write(sbuf.toString());}catch(IOException e){;}
+  }
+
+  public final void write(char[] cbuf, int off,int len){
+    int i,j=off;
+    boolean state=true;
+    char c;
+
+    for(i=off;i<len;i++) {
+      c=cbuf[i];
+      if(state) {
+        if (c=='\n') state=false;
+        cbuf[j++]=c;
+      }
+      else
+         if (!Character.isWhitespace(c)) {
+                                               cbuf[j++]=c;
+            state=true;
+         }
+    }
+    try{out.write(cbuf,off,j);}catch(IOException e){;}
+  }
+
+
+}