package org.eclipse.ant.core; | |
/* | |
* (c) Copyright IBM Corp. 2000, 2001. | |
* All Rights Reserved. | |
*/ | |
import org.apache.tools.ant.util.regexp.RegexpMatcher; | |
import org.apache.xerces.utils.regex.RegularExpression; | |
import org.apache.xerces.utils.regex.Match; | |
import java.util.Vector; | |
import org.apache.tools.ant.BuildException; | |
/** | |
* An Ant regular expression matcher adapted to use the Xerces XML parser. | |
* This implementation is the standard one used when running Ant inside the | |
* Eclipse platform using the <code>AntRunner</code>. | |
* <p> | |
* <b>Note:</b> This class/interface is part of an interim API that is still under | |
* development and expected to change significantly before reaching stability. | |
* It is being made available at this early stage to solicit feedback from pioneering | |
* adopters on the understanding that any code that uses this API will almost | |
* certainly be broken (repeatedly) as the API evolves. | |
* </p> | |
*/ | |
public class XercesRegexpMatcher implements RegexpMatcher { | |
private RegularExpression regexp; | |
/** | |
* Creates a new Xerces based regular expression matcher. | |
*/ | |
public XercesRegexpMatcher() { | |
super(); | |
} | |
/** | |
* Returns a collection of matched groups found in an argument. | |
* | |
* <p>Group 0 will be the full match, the rest are the | |
* parenthesized subexpressions</p>. | |
* | |
* @return the collection of matched groups found in the argument. | |
* @param argument the argument | |
*/ | |
public Vector getGroups(String argument) { | |
Match match = new Match(); | |
if (!regexp.matches(argument, match)) | |
return null; | |
int count = match.getNumberOfGroups(); | |
Vector result = new Vector(count); | |
for (int i = 0; i < count; i++) { | |
result.add(match.getCapturedText(i)); | |
} | |
return result; | |
} | |
/** | |
* Returns a string representation of the receiver | |
* | |
* @return a string representation of the receiver | |
*/ | |
public String getPattern() { | |
return regexp.getPattern(); | |
} | |
/** | |
* Returns a <code>boolean</code> indicating whether an argument | |
* matches with the receiver. | |
* | |
* @return a <code>boolean</code> indicating whether an argument | |
* matches with the receiver. | |
* @param argument the argument to match with the receiver | |
*/ | |
public boolean matches(String argument) { | |
return regexp.matches(argument); | |
} | |
/** | |
* Sets the receiver's pattern. | |
* | |
* @param pattern the pattern value | |
* @exception BuildException thrown if a problem occurs setting the pattern | |
*/ | |
public void setPattern(String pattern) throws BuildException { | |
if (regexp == null) | |
regexp = new RegularExpression(pattern); | |
else | |
regexp.setPattern(pattern); | |
} | |
} |