aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/util/StringTokenizer.java
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/util/StringTokenizer.java')
-rw-r--r--framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/util/StringTokenizer.java154
1 files changed, 154 insertions, 0 deletions
diff --git a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/util/StringTokenizer.java b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/util/StringTokenizer.java
new file mode 100644
index 00000000..7addf310
--- /dev/null
+++ b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/util/StringTokenizer.java
@@ -0,0 +1,154 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.tools.ant.util;
+
+import java.io.IOException;
+import java.io.Reader;
+
+import org.apache.tools.ant.ProjectComponent;
+
+/**
+ * Class to tokenize the input as areas separated
+ * by white space, or by a specified list of
+ * delim characters. Behaves like java.util.StringTokenizer.
+ * If the stream starts with delim characters, the first
+ * token will be an empty string (unless the treat delims
+ * as tokens flag is set).
+ * @since Ant 1.7
+ */
+public class StringTokenizer extends ProjectComponent implements Tokenizer {
+ private static final int NOT_A_CHAR = -2;
+ private String intraString = "";
+ private int pushed = NOT_A_CHAR;
+ private char[] delims = null;
+ private boolean delimsAreTokens = false;
+ private boolean suppressDelims = false;
+ private boolean includeDelims = false;
+
+ /**
+ * attribute delims - the delimiter characters
+ * @param delims a string containing the delimiter characters
+ */
+ public void setDelims(String delims) {
+ this.delims = StringUtils.resolveBackSlash(delims).toCharArray();
+ }
+
+ /**
+ * attribute delimsaretokens - treat delimiters as
+ * separate tokens.
+ * @param delimsAreTokens true if delimiters are to be separate
+ */
+
+ public void setDelimsAreTokens(boolean delimsAreTokens) {
+ this.delimsAreTokens = delimsAreTokens;
+ }
+ /**
+ * attribute suppressdelims - suppress delimiters.
+ * default - false
+ * @param suppressDelims if true do not report delimiters
+ */
+ public void setSuppressDelims(boolean suppressDelims) {
+ this.suppressDelims = suppressDelims;
+ }
+
+ /**
+ * attribute includedelims - treat delimiters as part
+ * of the token.
+ * default - false
+ * @param includeDelims if true add delimiters to the token
+ */
+ public void setIncludeDelims(boolean includeDelims) {
+ this.includeDelims = includeDelims;
+ }
+
+ /**
+ * find and return the next token
+ *
+ * @param in the input stream
+ * @return the token
+ * @exception IOException if an error occurs reading
+ */
+ public String getToken(Reader in) throws IOException {
+ int ch = -1;
+ if (pushed != NOT_A_CHAR) {
+ ch = pushed;
+ pushed = NOT_A_CHAR;
+ } else {
+ ch = in.read();
+ }
+ if (ch == -1) {
+ return null;
+ }
+ boolean inToken = true;
+ intraString = "";
+ StringBuffer word = new StringBuffer();
+ StringBuffer padding = new StringBuffer();
+ while (ch != -1) {
+ char c = (char) ch;
+ boolean isDelim = isDelim(c);
+ if (inToken) {
+ if (isDelim) {
+ if (delimsAreTokens) {
+ if (word.length() == 0) {
+ word.append(c);
+ } else {
+ pushed = ch;
+ }
+ break;
+ }
+ padding.append(c);
+ inToken = false;
+ } else {
+ word.append(c);
+ }
+ } else {
+ if (isDelim) {
+ padding.append(c);
+ } else {
+ pushed = ch;
+ break;
+ }
+ }
+ ch = in.read();
+ }
+ intraString = padding.toString();
+ if (includeDelims) {
+ word.append(intraString);
+ }
+ return word.toString();
+ }
+
+ /**
+ * @return the intratoken string
+ */
+ public String getPostToken() {
+ return suppressDelims || includeDelims ? "" : intraString;
+ }
+
+ private boolean isDelim(char ch) {
+ if (delims == null) {
+ return Character.isWhitespace(ch);
+ }
+ for (int i = 0; i < delims.length; ++i) {
+ if (delims[i] == ch) {
+ return true;
+ }
+ }
+ return false;
+ }
+}