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]

Reply via email to