FileDocCategorySizeDatePackage
JakartaRegexpRegexp.javaAPI DocApache Ant 1.703142Wed Dec 13 06:16:18 GMT 2006org.apache.tools.ant.util.regexp

JakartaRegexpRegexp

public class JakartaRegexpRegexp extends JakartaRegexpMatcher implements Regexp
Regular expression implementation using the Jakarta Regexp package

Fields Summary
Constructors Summary
public JakartaRegexpRegexp()
Constructor for JakartaRegexpRegexp

        super();
    
Methods Summary
protected intgetSubsOptions(int options)
Convert ant regexp substitution option to apache regex options.

param
options the ant regexp options
return
the apache regex substition options

        int subsOptions = RE.REPLACE_FIRSTONLY;
        if (RegexpUtil.hasFlag(options, REPLACE_ALL)) {
            subsOptions = RE.REPLACE_ALL;
        }
        return subsOptions;
    
public java.lang.Stringsubstitute(java.lang.String input, java.lang.String argument, int options)
Perform a substitution on the regular expression.

param
input The string to substitute on
param
argument The string which defines the substitution
param
options The list of options for the match and replace.
return
the result of the operation
throws
BuildException on error

        Vector v = getGroups(input, options);

        // replace \1 with the corresponding group
        StringBuffer result = new StringBuffer();
        for (int i = 0; i < argument.length(); i++) {
            char c = argument.charAt(i);
            if (c == '\\") {
                if (++i < argument.length()) {
                    c = argument.charAt(i);
                    int value = Character.digit(c, 10);
                    if (value > -1) {
                        result.append((String) v.elementAt(value));
                    } else {
                        result.append(c);
                    }
                } else {
                    // XXX - should throw an exception instead?
                    result.append('\\");
                }
            } else {
                result.append(c);
            }
        }
        argument = result.toString();

        RE reg = getCompiledPattern(options);
        int sOptions = getSubsOptions(options);
        return reg.subst(input, argument, sOptions);