RegExpRule.java

package org.atteo.evo.inflector;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

class RegExpRule implements Rule {
    private final Pattern singular;
    private final String plural;

    RegExpRule(Pattern singular, String plural) {
        this.singular = singular;
        this.plural = plural;
    }

    RegExpRule(String singular, String plural) {
        this.singular = Pattern.compile(singular);
        this.plural = plural;
    }

    @Override
    public String getPlural(String word) {
        StringBuffer buffer = new StringBuffer();
        Matcher matcher = singular.matcher(word);
        if (matcher.find()) {
            matcher.appendReplacement(buffer, plural);
            matcher.appendTail(buffer);
            return buffer.toString();
        }
        return null;
    }
}