You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by pe...@apache.org on 2003/07/23 13:32:14 UTC
cvs commit: ant/src/main/org/apache/tools/ant/util Tokenizer.java LineTokenizer.java FileUtils.java
peterreilly 2003/07/23 04:32:13
Modified: docs/manual/CoreTypes filterchain.html
src/main/org/apache/tools/ant/filters HeadFilter.java
TailFilter.java TokenFilter.java
src/main/org/apache/tools/ant/taskdefs/optional/i18n
Translate.java
src/main/org/apache/tools/ant/util FileUtils.java
Added: src/main/org/apache/tools/ant/util Tokenizer.java
LineTokenizer.java
Log:
Refactor: move LineTokenizer out of TokenFilter
Revision Changes Path
1.12 +1 -1 ant/docs/manual/CoreTypes/filterchain.html
Index: filterchain.html
===================================================================
RCS file: /home/cvs/ant/docs/manual/CoreTypes/filterchain.html,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- filterchain.html 5 Jun 2003 18:00:36 -0000 1.11
+++ filterchain.html 23 Jul 2003 11:32:12 -0000 1.12
@@ -1256,7 +1256,7 @@
Custom string filters and tokenizers may be plugged in by
extending the interfaces org.apache.tools.ant.filters.TokenFilter.Filter
-and org.apache.tools.ant.filters.TokenFilter.Tokenizer respectly.
+and org.apache.tools.ant.util.Tokenizer respectly.
They are defined the build file using <typedef/>. For
example a string filter that capitalizes words may be declared as:
1.12 +3 -2 ant/src/main/org/apache/tools/ant/filters/HeadFilter.java
Index: HeadFilter.java
===================================================================
RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/filters/HeadFilter.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- HeadFilter.java 18 Jul 2003 14:21:21 -0000 1.11
+++ HeadFilter.java 23 Jul 2003 11:32:12 -0000 1.12
@@ -55,6 +55,7 @@
import java.io.IOException;
import java.io.Reader;
+import org.apache.tools.ant.util.LineTokenizer;
import org.apache.tools.ant.types.Parameter;
/**
@@ -91,7 +92,7 @@
private long skip = 0;
/** A line tokenizer */
- private TokenFilter.LineTokenizer lineTokenizer = null;
+ private LineTokenizer lineTokenizer = null;
/** the current line from the input stream */
private String line = null;
@@ -115,7 +116,7 @@
*/
public HeadFilter(final Reader in) {
super(in);
- lineTokenizer = new TokenFilter.LineTokenizer();
+ lineTokenizer = new LineTokenizer();
lineTokenizer.setIncludeDelims(true);
}
1.13 +3 -2 ant/src/main/org/apache/tools/ant/filters/TailFilter.java
Index: TailFilter.java
===================================================================
RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/filters/TailFilter.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- TailFilter.java 18 Jul 2003 14:21:21 -0000 1.12
+++ TailFilter.java 23 Jul 2003 11:32:12 -0000 1.13
@@ -57,6 +57,7 @@
import java.io.Reader;
import java.util.LinkedList;
import org.apache.tools.ant.types.Parameter;
+import org.apache.tools.ant.util.LineTokenizer;
/**
* Reads the last <code>n</code> lines of a stream. (Default is last10 lines.)
@@ -100,7 +101,7 @@
private int bufferPos = 0;
/** A line tokenizer */
- private TokenFilter.LineTokenizer lineTokenizer = null;
+ private LineTokenizer lineTokenizer = null;
/** the current line from the input stream */
private String line = null;
@@ -126,7 +127,7 @@
*/
public TailFilter(final Reader in) {
super(in);
- lineTokenizer = new TokenFilter.LineTokenizer();
+ lineTokenizer = new LineTokenizer();
lineTokenizer.setIncludeDelims(true);
}
1.10 +2 -112 ant/src/main/org/apache/tools/ant/filters/TokenFilter.java
Index: TokenFilter.java
===================================================================
RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/filters/TokenFilter.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- TokenFilter.java 6 Jul 2003 09:03:17 -0000 1.9
+++ TokenFilter.java 23 Jul 2003 11:32:12 -0000 1.10
@@ -63,6 +63,8 @@
import org.apache.tools.ant.types.RegularExpression;
import org.apache.tools.ant.types.Substitution;
import org.apache.tools.ant.util.FileUtils;
+import org.apache.tools.ant.util.Tokenizer;
+import org.apache.tools.ant.util.LineTokenizer;
import org.apache.tools.ant.util.regexp.Regexp;
/**
@@ -78,28 +80,6 @@
public class TokenFilter extends BaseFilterReader
implements ChainableReader {
/**
- * input stream tokenizers implement this interface
- */
- public interface Tokenizer {
- /**
- * get the next token from the input stream
- * @param in the input stream
- * @return the next token, or null for the end
- * of the stream
- * @throws IOException if an error occurs
- */
- String getToken(Reader in)
- throws IOException;
-
- /**
- * return the string between tokens, after the
- * previous token.
- * @return the intra-token string
- */
- String getPostToken();
- }
-
- /**
* string filters implement this interface
*/
public interface Filter {
@@ -359,96 +339,6 @@
public String getPostToken() {
return "";
}
- }
-
-
- /**
- * class to tokenize the input as lines seperated
- * by \r (mac style), \r\n (dos/windows style) or \n (unix style)
- */
- public static class LineTokenizer extends ProjectComponent
- implements Tokenizer {
- private String lineEnd = "";
- private int pushed = -2;
- private boolean includeDelims = false;
-
- /**
- * attribute includedelims - whether to include
- * the line ending with the line, or to return
- * it in the posttoken
- * default false
- * @param includeDelims if true include /r and /n in the line
- */
-
- public void setIncludeDelims(boolean includeDelims) {
- this.includeDelims = includeDelims;
- }
-
- /**
- * get the next line from the input
- *
- * @param in the input reader
- * @return the line excluding /r or /n, unless includedelims is set
- * @exception IOException if an error occurs reading
- */
- public String getToken(Reader in) throws IOException {
- int ch = -1;
- if (pushed != -2) {
- ch = pushed;
- pushed = -2;
- } else {
- ch = in.read();
- }
- if (ch == -1) {
- return null;
- }
-
- lineEnd = "";
- StringBuffer line = new StringBuffer();
-
- int state = 0;
- while (ch != -1) {
- if (state == 0) {
- if (ch == '\r') {
- state = 1;
- } else if (ch == '\n') {
- lineEnd = "\n";
- break;
- } else {
- line.append((char) ch);
- }
- } else {
- state = 0;
- if (ch == '\n') {
- lineEnd = "\r\n";
- } else {
- pushed = ch;
- lineEnd = "\r";
- }
- break;
- }
- ch = in.read();
- }
- if (ch == -1 && state == 1) {
- lineEnd = "\r";
- }
-
- if (includeDelims) {
- line.append(lineEnd);
- }
- return line.toString();
- }
-
- /**
- * @return the line ending character(s) for the current line
- */
- public String getPostToken() {
- if (includeDelims) {
- return "";
- }
- return lineEnd;
- }
-
}
/**
1.30 +2 -1 ant/src/main/org/apache/tools/ant/taskdefs/optional/i18n/Translate.java
Index: Translate.java
===================================================================
RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/i18n/Translate.java,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -r1.29 -r1.30
--- Translate.java 19 Jul 2003 15:44:57 -0000 1.29
+++ Translate.java 23 Jul 2003 11:32:13 -0000 1.30
@@ -71,6 +71,7 @@
import org.apache.tools.ant.taskdefs.MatchingTask;
import org.apache.tools.ant.types.FileSet;
import org.apache.tools.ant.util.FileUtils;
+import org.apache.tools.ant.util.LineTokenizer;
/**
* Translates text embedded in files using Resource Bundle files.
@@ -573,7 +574,7 @@
BufferedReader in
= new BufferedReader(new InputStreamReader(fis, srcEncoding));
String line;
- TokenFilter.LineTokenizer lineTokenizer = new TokenFilter.LineTokenizer();
+ LineTokenizer lineTokenizer = new LineTokenizer();
lineTokenizer.setIncludeDelims(true);
line = lineTokenizer.getToken(in);
while ((line) != null) {
1.53 +2 -2 ant/src/main/org/apache/tools/ant/util/FileUtils.java
Index: FileUtils.java
===================================================================
RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/util/FileUtils.java,v
retrieving revision 1.52
retrieving revision 1.53
diff -u -r1.52 -r1.53
--- FileUtils.java 22 Jul 2003 14:58:48 -0000 1.52
+++ FileUtils.java 23 Jul 2003 11:32:13 -0000 1.53
@@ -583,7 +583,7 @@
in = new BufferedReader(rdr);
}
- TokenFilter.LineTokenizer lineTokenizer = new TokenFilter.LineTokenizer();
+ LineTokenizer lineTokenizer = new LineTokenizer();
lineTokenizer.setIncludeDelims(true);
String newline = null;
String line = lineTokenizer.getToken(in);
1.1 ant/src/main/org/apache/tools/ant/util/Tokenizer.java
Index: Tokenizer.java
===================================================================
/*
* The Apache Software License, Version 1.1
*
* Copyright (c) 2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "Ant" and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
package org.apache.tools.ant.util;
import java.io.Reader;
import java.io.IOException;
/**
* input stream tokenizers implement this interface
*
* @author Peter Reilly
* @version Ant 1.6
*/
public interface Tokenizer {
/**
* get the next token from the input stream
* @param in the input stream
* @return the next token, or null for the end
* of the stream
* @throws IOException if an error occurs
*/
String getToken(Reader in)
throws IOException;
/**
* return the string between tokens, after the
* previous token.
* @return the intra-token string
*/
String getPostToken();
}
1.1 ant/src/main/org/apache/tools/ant/util/LineTokenizer.java
Index: LineTokenizer.java
===================================================================
/*
* The Apache Software License, Version 1.1
*
* Copyright (c) 2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "Ant" and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
package org.apache.tools.ant.util;
import java.io.Reader;
import java.io.IOException;
import org.apache.tools.ant.ProjectComponent;
/**
* class to tokenize the input as lines seperated
* by \r (mac style), \r\n (dos/windows style) or \n (unix style)
* @author Peter Reilly
* @since Ant 1.6
*/
public class LineTokenizer extends ProjectComponent
implements Tokenizer {
private String lineEnd = "";
private int pushed = -2;
private boolean includeDelims = false;
/**
* attribute includedelims - whether to include
* the line ending with the line, or to return
* it in the posttoken
* default false
* @param includeDelims if true include /r and /n in the line
*/
public void setIncludeDelims(boolean includeDelims) {
this.includeDelims = includeDelims;
}
/**
* get the next line from the input
*
* @param in the input reader
* @return the line excluding /r or /n, unless includedelims is set
* @exception IOException if an error occurs reading
*/
public String getToken(Reader in) throws IOException {
int ch = -1;
if (pushed != -2) {
ch = pushed;
pushed = -2;
} else {
ch = in.read();
}
if (ch == -1) {
return null;
}
lineEnd = "";
StringBuffer line = new StringBuffer();
int state = 0;
while (ch != -1) {
if (state == 0) {
if (ch == '\r') {
state = 1;
} else if (ch == '\n') {
lineEnd = "\n";
break;
} else {
line.append((char) ch);
}
} else {
state = 0;
if (ch == '\n') {
lineEnd = "\r\n";
} else {
pushed = ch;
lineEnd = "\r";
}
break;
}
ch = in.read();
}
if (ch == -1 && state == 1) {
lineEnd = "\r";
}
if (includeDelims) {
line.append(lineEnd);
}
return line.toString();
}
/**
* @return the line ending character(s) for the current line
*/
public String getPostToken() {
if (includeDelims) {
return "";
}
return lineEnd;
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org