CategoryRule.java

package org.atteo.evo.inflector;

class CategoryRule implements Rule {
    private final String[] list;
    private final String singular;
    private final String plural;

    public CategoryRule(String[] list, String singular, String plural) {
        this.list = list;
        this.singular = singular;
        this.plural = plural;
    }

    @Override
    public String getPlural(String word) {
        String lowerWord = word.toLowerCase();
        for (String suffix : list) {
            if (lowerWord.endsWith(suffix)) {
                if (!lowerWord.endsWith(singular)) {
                    throw new RuntimeException("Internal error");
                }
                return word.substring(0, word.length() - singular.length()) + plural;
            }
        }
        return null;
    }
}