Return-Path: Delivered-To: apmail-ant-dev-archive@ant.apache.org Received: (qmail 66773 invoked by uid 500); 23 Jul 2003 11:32:15 -0000 Mailing-List: contact dev-help@ant.apache.org; run by ezmlm Precedence: bulk List-Unsubscribe: List-Subscribe: List-Help: List-Post: List-Id: "Ant Developers List" Reply-To: "Ant Developers List" Delivered-To: mailing list dev@ant.apache.org Received: (qmail 66762 invoked by uid 500); 23 Jul 2003 11:32:14 -0000 Received: (qmail 66758 invoked from network); 23 Jul 2003 11:32:14 -0000 Received: from icarus.apache.org (208.185.179.13) by daedalus.apache.org with SMTP; 23 Jul 2003 11:32:14 -0000 Received: (qmail 76848 invoked by uid 1539); 23 Jul 2003 11:32:14 -0000 Date: 23 Jul 2003 11:32:14 -0000 Message-ID: <20030723113214.76847.qmail@icarus.apache.org> From: peterreilly@apache.org To: ant-cvs@apache.org Subject: cvs commit: ant/src/main/org/apache/tools/ant/util Tokenizer.java LineTokenizer.java FileUtils.java X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N 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 n 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 * . */ 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 * . */ 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