![JAR search and dependency download from the Maven repository](/logo.png)
org.cthul.strings.plural.GenderedPluralizer Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of cthul-strings Show documentation
Show all versions of cthul-strings Show documentation
Functions for converting strings from and to various formats,
such as roman numbers, alpha indices, Java identifiers,
and format strings.
The newest version!
package org.cthul.strings.plural;
import org.cthul.strings.Pluralizer;
/**
*
* @author Arian Treffer
*/
public class GenderedPluralizer implements Pluralizer {
public static enum Gender {
NEUTRAL,
MASCULINE,
FEMININE;
}
public static interface GenderOracle {
Gender guessForSingular(String word);
Gender guessForPlural(String word);
}
protected static final String ANY_GENDER_MATCH_FAILED = "--XX--";
private final Pluralizer anyGender;
private final GenderOracle genderOracle;
private final Pluralizer neutral;
private final Pluralizer masculine;
private final Pluralizer feminine;
public GenderedPluralizer(Pluralizer anyGender, GenderOracle genderOracle, Pluralizer neutral, Pluralizer masculine, Pluralizer feminine) {
this.anyGender = anyGender;
this.genderOracle = genderOracle;
this.neutral = neutral;
this.masculine = masculine;
this.feminine = feminine;
}
@Override
public String pluralOf(String word) {
String p = anyGender.pluralOf(word);
if (!p.endsWith(ANY_GENDER_MATCH_FAILED)) return p;
Gender g = genderOracle.guessForSingular(word);
switch(g) {
case NEUTRAL: return neutral.pluralOf(word);
case MASCULINE: return masculine.pluralOf(word);
case FEMININE: return feminine.pluralOf(word);
default: throw new AssertionError(g);
}
}
@Override
public String singularOf(String word) {
String s = anyGender.pluralOf(word);
if (!s.equals(ANY_GENDER_MATCH_FAILED)) return s;
Gender g = genderOracle.guessForPlural(word);
switch(g) {
case NEUTRAL: return neutral.singularOf(word);
case MASCULINE: return masculine.singularOf(word);
case FEMININE: return feminine.singularOf(word);
default: throw new AssertionError(g);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy