Author: peterreilly Date: Mon Sep 25 14:31:20 2006 New Revision: 449818 URL: http://svn.apache.org/viewvc?view=rev&rev=449818 Log: implementation of matches condition
Added: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/condition/Matches.java Added: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/condition/Matches.java URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/condition/Matches.java?view=auto&rev=449818 ============================================================================== --- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/condition/Matches.java (added) +++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/condition/Matches.java Mon Sep 25 14:31:20 2006 @@ -0,0 +1,128 @@ +/* + * 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.taskdefs.condition; + +import org.apache.tools.ant.BuildException; +import org.apache.tools.ant.ProjectComponent; +import org.apache.tools.ant.filters.TokenFilter; +import org.apache.tools.ant.util.regexp.Regexp; +import org.apache.tools.ant.types.RegularExpression; +import org.apache.tools.ant.util.regexp.RegexpMatcher; + +/** + * Simple regular expression condition. + * + * @since Ant 1.7 + */ +public class Matches extends ProjectComponent implements Condition { + + private String string; + private boolean caseSensitive = true; + private boolean multiLine = false; + private boolean singleLine = false; + private RegularExpression regularExpression; + + /** + * Set the string + * + * @param string the string to match + */ + public void setString(String string) { + this.string = string; + } + + /** + * Set the regular expression to match against + * + * @param pattern the regular expression pattern + */ + public void setPattern(String pattern) { + if (regularExpression != null) { + throw new BuildException( + "Only one regular expression is allowed."); + } + regularExpression = new RegularExpression(); + regularExpression.setPattern(pattern); + } + + /** + * A regular expression. + * You can use this element to refer to a previously + * defined regular expression datatype instance + * @return the regular expression object to be configured as an element + */ + public void addRegexp(RegularExpression regularExpression) { + if (this.regularExpression != null) { + throw new BuildException( + "Only one regular expression is allowed."); + } + this.regularExpression = regularExpression; + } + + /** + * Whether to ignore case or not. + * @param b if false, ignore case. + * @since Ant 1.7 + */ + public void setCasesensitive(boolean b) { + caseSensitive = b; + } + + /** + * Whether to match should be multiline. + * @param b the value to set. + */ + public void setMultiline(boolean b) { + multiLine = b; + } + + /** + * Whether to treat input as singleline ('.' matches newline). + * Corresponsds to java.util.regex.Pattern.DOTALL. + * @param b the value to set. + */ + public void setSingleLine(boolean b) { + singleLine = b; + } + + /** + * @return true if the string matches the regular expression pattern + * @exception BuildException if the attributes are not set correctly + */ + public boolean eval() throws BuildException { + if (string == null) { + throw new BuildException( + "Parameter string is required in matches."); + } + if (regularExpression == null) { + throw new BuildException("Missing pattern in matches."); + } + int options = RegexpMatcher.MATCH_DEFAULT; + if (!caseSensitive) { + options = options | RegexpMatcher.MATCH_CASE_INSENSITIVE; + } + if (multiLine) { + options = options | RegexpMatcher.MATCH_MULTILINE; + } + if (singleLine) { + options = options | RegexpMatcher.MATCH_SINGLELINE; + } + Regexp regexp = regularExpression.getRegexp(getProject()); + return regexp.matches(string, options); + } +} --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]