1 10 package org.mmbase.util.transformers; 11 12 import java.io.*; 13 14 import org.mmbase.util.logging.*; 15 16 29 30 public class SpaceReducer extends ReaderTransformer implements CharTransformer { 31 32 private static Logger log = Logging.getLoggerInstance(SpaceReducer.class); 33 34 public Writer transform(Reader r, Writer w) { 35 try { 36 BufferedReader br = new BufferedReader(r); 37 PrintWriter bw = new PrintWriter(new BufferedWriter(w)); 38 39 String line; 40 while ((line = br.readLine()) != null) { 41 if (!line.trim().equals("")) { 42 bw.println(line); 43 } 44 } 45 bw.flush(); 46 } catch (java.io.IOException e) { 47 log.error(e.toString()); 48 } 49 return w; 50 } 51 52 public Writer transform2(Reader r, Writer w) { 53 54 int space = 1; int nl = 1; 58 StringBuffer indent = new StringBuffer (); int l = 0; 61 int lines = 0; try { 63 log.debug("Starting spacereducing"); 64 int c = r.read(); 65 while (c != -1) { 66 if (c == '\n' || c == '\r' ) { 67 if (nl == 0) w.write('\n'); 68 nl++; 69 l = 0; 70 space = 0; indent.setLength(0); 71 } else if (Character.isWhitespace((char) c)) { 72 if (space == 0 && l > 0) w.write(' '); 73 if (l == 0) indent.append((char) c); 74 space++; 75 } else { 76 if (l == 0 && space > 0) { 77 w.write(indent.toString()); 78 indent.setLength(0); 79 } 80 space = 0; lines += nl; nl = 0; l++; 81 w.write(c); 82 } 83 c = r.read(); 84 } 85 log.debug("Finished: read " + lines + " lines"); 86 } catch (java.io.IOException e) { 87 log.error(e.toString()); 88 } 89 return w; 90 } 91 92 public String toString() { 93 return "SPACEREDUCER"; 94 } 95 } 96 | Popular Tags |