KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > mmbase > util > transformers > Trimmer


1 /*
2
3 This software is OSI Certified Open Source Software.
4 OSI Certified is a certification mark of the Open Source Initiative.
5
6 The license (Mozilla version 1.0) can be read at the MMBase site.
7 See http://www.MMBase.org/license
8
9 */

10 package org.mmbase.util.transformers;
11
12 import java.io.Reader JavaDoc;
13 import java.io.Writer JavaDoc;
14
15 import org.mmbase.util.logging.*;
16
17 /**
18  * Trims leading and trailing white space.
19  *
20  * @author Michiel Meeuwissen
21  * @since MMBase-1.7
22  * @version $Id: Trimmer.java,v 1.2 2005/01/30 16:46:37 nico Exp $
23  */

24
25 public class Trimmer extends ReaderTransformer implements CharTransformer {
26     private static final Logger log = Logging.getLoggerInstance(Trimmer.class);
27
28
29     public String JavaDoc transform(String JavaDoc s) {
30         return s.trim();
31     }
32
33     public Writer JavaDoc transform(Reader JavaDoc r, Writer JavaDoc w) {
34         StringBuffer JavaDoc word = new StringBuffer JavaDoc(); // current word
35
StringBuffer JavaDoc space = new StringBuffer JavaDoc();
36         try {
37             log.trace("Starting trim");
38             int c = r.read();
39
40             while (c != -1 && Character.isWhitespace((char) c)) {
41                 c = r.read();
42             }
43             boolean inWord = true;
44             while (true) {
45                 if (Character.isWhitespace((char) c)) {
46                     if (inWord) {
47                         w.write(word.toString());
48                         word.setLength(0);
49                         inWord = false;
50                     }
51                     space.append((char) c);
52                 } else {
53                     if (! inWord) {
54                         w.write(space.toString());
55                         space.setLength(0);
56                         inWord = true;
57                     }
58                     word.append((char) c);
59                 }
60                 c = r.read();
61                 if (c == -1) break;
62             }
63             // write last word, but not last spaces
64
if (inWord) {
65                 w.write(word.toString());
66             }
67         } catch (java.io.IOException JavaDoc e) {
68             log.error(e.toString());
69         }
70         return w;
71     }
72
73
74     public String JavaDoc toString() {
75         return "TRIMMER";
76     }
77 }
78
Popular Tags