From 46cb1f6c030991d314d0ef1fafa53e53ef3e03c9 Mon Sep 17 00:00:00 2001 From: "Benjamin J. Culkin" Date: Fri, 15 Sep 2017 15:21:34 -0300 Subject: Format --- src/main/java/bjc/inflexion/EnglishUtils.java | 48 +++---- src/main/java/bjc/inflexion/InflectionML.java | 22 ++-- .../inflexion/nouns/CategoricalNounInflection.java | 30 +++-- .../inflexion/nouns/CompoundNounInflection.java | 53 +++++--- .../inflexion/nouns/IrregularNounInflection.java | 34 +++-- src/main/java/bjc/inflexion/nouns/Nouns.java | 145 ++++++++++++--------- .../bjc/inflexion/nouns/SimpleInflectionAffix.java | 5 +- 7 files changed, 203 insertions(+), 134 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/bjc/inflexion/EnglishUtils.java b/src/main/java/bjc/inflexion/EnglishUtils.java index e3c0823..3feb55b 100644 --- a/src/main/java/bjc/inflexion/EnglishUtils.java +++ b/src/main/java/bjc/inflexion/EnglishUtils.java @@ -21,32 +21,34 @@ package bjc.inflexion; */ public class EnglishUtils { private static String[] smallNums = new String[] { "zero", "one", "two", "three", "four", "five", "six", - "seven", "eight", "nine", "ten" }; + "seven", "eight", "nine", "ten" + }; - private static String[] summaryNums = new String[] { "no", "one", "a couple of", "a few", "several" }; - private static String[] endSummaryNums = new String[] { "no", "one", "a couple of", "a few", "several" }; + private static String[] summaryNums = new String[] { "no", "one", "a couple of", "a few", "several" }; + private static String[] endSummaryNums = new String[] { "no", "one", "a couple of", "a few", "several" }; private static int[] summaryMap = new int[] { - /* - * no - */ - 0, - /* - * one - */ - 1, - /* - * a couple of - */ - 2, - /* - * a few - */ - 3, 3, 3, - /* - * several - */ - 4, 4, 4, 4 }; + /* + * no + */ + 0, + /* + * one + */ + 1, + /* + * a couple of + */ + 2, + /* + * a few + */ + 3, 3, 3, + /* + * several + */ + 4, 4, 4, 4 + }; /** * Convert small integers to words. diff --git a/src/main/java/bjc/inflexion/InflectionML.java b/src/main/java/bjc/inflexion/InflectionML.java index 7d0cb6a..e12263b 100644 --- a/src/main/java/bjc/inflexion/InflectionML.java +++ b/src/main/java/bjc/inflexion/InflectionML.java @@ -22,7 +22,6 @@ import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; -import bjc.inflexion.examples.InflexionTester; import bjc.inflexion.nouns.InflectionException; import bjc.inflexion.nouns.Noun; import bjc.inflexion.nouns.Nouns; @@ -33,18 +32,18 @@ import bjc.inflexion.nouns.Prepositions; * */ public class InflectionML { - private static final List ESUB_OPT = Arrays.asList("a", "s", "w"); - private static Pattern FORM_MARKER = Pattern - .compile("<(?[#N])(?[^:]*):(?[^>]*)>"); + private static final List ESUB_OPT = Arrays.asList("a", "s", "w"); + private static Pattern FORM_MARKER = Pattern + .compile("<(?[#N])(?[^:]*):(?[^>]*)>"); private static Nouns nounDB; static { final Prepositions prepositionDB = new Prepositions(); - prepositionDB.loadFromStream(InflexionTester.class.getResourceAsStream("/prepositions.txt")); + prepositionDB.loadFromStream(InflectionML.class.getResourceAsStream("/prepositions.txt")); nounDB = new Nouns(prepositionDB); - nounDB.loadFromStream(InflexionTester.class.getResourceAsStream("/nouns.txt")); + nounDB.loadFromStream(InflectionML.class.getResourceAsStream("/nouns.txt")); } /** @@ -69,6 +68,7 @@ public class InflectionML { final String text = formMatcher.group("text"); final Set optionSet = new HashSet<>(); + for (int i = 1; i <= options.length(); i++) { optionSet.add(options.substring(i - 1, i)); } @@ -80,6 +80,7 @@ public class InflectionML { optionSet.remove("e"); optionSet.addAll(ESUB_OPT); } + curCount = Integer.parseInt(text); if (optionSet.contains("i")) { @@ -126,7 +127,7 @@ public class InflectionML { } final boolean shouldOverride = !(rep.equals("no") || rep.equals("a") - || rep.equals("an")); + || rep.equals("an")); if (optionSet.contains("w") && shouldOverride) { rep = EnglishUtils.smallIntToWord(curCount); @@ -139,11 +140,14 @@ public class InflectionML { formMatcher.appendReplacement(formBuffer, rep); } catch (final NumberFormatException nfex) { throw new InflectionException("Count setter must take a number as a parameter", - nfex); + nfex); } + break; + case "N": final Noun noun = nounDB.getNoun(text); + if (optionSet.contains("p") || !inflectSingular) { if (optionSet.contains("c")) { formMatcher.appendReplacement(formBuffer, noun.classicalPlural()); @@ -153,7 +157,9 @@ public class InflectionML { } else { formMatcher.appendReplacement(formBuffer, noun.singular()); } + break; + default: final String msg = String.format("Unknown command '%s'", command); diff --git a/src/main/java/bjc/inflexion/nouns/CategoricalNounInflection.java b/src/main/java/bjc/inflexion/nouns/CategoricalNounInflection.java index 1989596..2651cc5 100644 --- a/src/main/java/bjc/inflexion/nouns/CategoricalNounInflection.java +++ b/src/main/java/bjc/inflexion/nouns/CategoricalNounInflection.java @@ -23,13 +23,14 @@ package bjc.inflexion.nouns; * */ public class CategoricalNounInflection implements NounInflection { - private static final String TOSTRING_FMT = "CategoricalNounInflection [singular=%s, modernPlural=%s," - + " classicalPlural=%s]"; + private static final String TOSTRING_FMT = + "CategoricalNounInflection [singular=%s, modernPlural=%s," + + " classicalPlural=%s]"; private final InflectionAffix singular; - private final InflectionAffix modernPlural; - private final InflectionAffix classicalPlural; + private final InflectionAffix modernPlural; + private final InflectionAffix classicalPlural; /** * Create a new categorical inflection. @@ -43,8 +44,9 @@ public class CategoricalNounInflection implements NounInflection { * @param classiclPlural * The affix for the classical plural. */ - public CategoricalNounInflection(final InflectionAffix singlar, final InflectionAffix modrnPlural, - final InflectionAffix classiclPlural) { + public CategoricalNounInflection(final InflectionAffix singlar, + final InflectionAffix modrnPlural, + final InflectionAffix classiclPlural) { if (singlar == null) throw new NullPointerException("Singular form must not be null"); else if (modrnPlural == null && classiclPlural == null) @@ -73,7 +75,8 @@ public class CategoricalNounInflection implements NounInflection { else if (matchesPlural(noun)) return false; else { - final String msg = String.format("Noun '%s' doesn't belong to this inflection", noun, this); + final String msg = String.format("Noun '%s' doesn't belong to this inflection", noun, + this); throw new InflectionException(msg); } @@ -86,7 +89,8 @@ public class CategoricalNounInflection implements NounInflection { else if (matchesPlural(noun)) return true; else { - final String msg = String.format("Noun '%s' doesn't belong to this inflection", noun, this); + final String msg = String.format("Noun '%s' doesn't belong to this inflection", noun, + this); throw new InflectionException(msg); } @@ -101,7 +105,8 @@ public class CategoricalNounInflection implements NounInflection { else if (classicalPlural != null && classicalPlural.hasAffix(plural)) return singular.affix(classicalPlural.deaffix(plural)); else { - final String msg = String.format("Noun '%s' doesn't belong to this inflection", plural, this); + final String msg = String.format("Noun '%s' doesn't belong to this inflection", plural, + this); throw new InflectionException(msg); } @@ -116,7 +121,8 @@ public class CategoricalNounInflection implements NounInflection { } else if (matchesPlural(singlar)) return singlar; else { - final String msg = String.format("Noun '%s' doesn't belong to this inflection", singlar, this); + final String msg = String.format("Noun '%s' doesn't belong to this inflection", singlar, + this); throw new InflectionException(msg); } @@ -147,7 +153,9 @@ public class CategoricalNounInflection implements NounInflection { @Override public boolean equals(final Object obj) { if (this == obj) return true; + if (obj == null) return false; + if (!(obj instanceof CategoricalNounInflection)) return false; final CategoricalNounInflection other = (CategoricalNounInflection) obj; @@ -168,6 +176,7 @@ public class CategoricalNounInflection implements NounInflection { if (modernPlural == null) return pluralizeClassical(singlar); String actSinglar = singlar; + if (isPlural(singlar)) { actSinglar = singularize(singlar); } @@ -180,6 +189,7 @@ public class CategoricalNounInflection implements NounInflection { if (classicalPlural == null) return pluralizeModern(singlar); String actSinglar = singlar; + if (isPlural(singlar)) { actSinglar = singularize(singlar); } diff --git a/src/main/java/bjc/inflexion/nouns/CompoundNounInflection.java b/src/main/java/bjc/inflexion/nouns/CompoundNounInflection.java index da551a3..e3fc574 100644 --- a/src/main/java/bjc/inflexion/nouns/CompoundNounInflection.java +++ b/src/main/java/bjc/inflexion/nouns/CompoundNounInflection.java @@ -26,20 +26,21 @@ import java.util.regex.Pattern; * */ public class CompoundNounInflection implements NounInflection { - private static final String TOSTRING_FMT = "CompoundNounInflection [compoundMatcher=%s, singularPattern=%s," - + " modernPluralPattern=%s, classicalPluralPattern=%s, hasPreposition=%s]"; + private static final String TOSTRING_FMT = + "CompoundNounInflection [compoundMatcher=%s, singularPattern=%s," + + " modernPluralPattern=%s, classicalPluralPattern=%s, hasPreposition=%s]"; /* * Data stores for use. */ - private final Nouns nunDB; - private final Prepositions pepositionDB; + private final Nouns nunDB; + private final Prepositions pepositionDB; private final Pattern cmpoundMatcher; private final String sigularPattern; - private final String mdernPluralPattern; - private final String clasicalPluralPattern; + private final String mdernPluralPattern; + private final String clasicalPluralPattern; /* * Whether or not this inflection takes a preposition. @@ -64,8 +65,10 @@ public class CompoundNounInflection implements NounInflection { * @param hasScrtch */ public CompoundNounInflection(final Nouns nounDB, final Prepositions prepositionDB, - final Pattern compoundMatcher, final String singularPattern, final String modernPluralPattern, - final String classicalPluralPattern, final boolean hasPreposition, final boolean hasScrtch) { + final Pattern compoundMatcher, final String singularPattern, + final String modernPluralPattern, + final String classicalPluralPattern, final boolean hasPreposition, + final boolean hasScrtch) { nunDB = nounDB; pepositionDB = prepositionDB; cmpoundMatcher = compoundMatcher; @@ -116,7 +119,7 @@ public class CompoundNounInflection implements NounInflection { if (haPreposition && hasScratch) return String.format(sigularPattern, actNoun.singular(), matcher.group("preposition"), - matcher.group("scratch")); + matcher.group("scratch")); else if (hasScratch) return String.format(sigularPattern, actNoun.singular(), matcher.group("scratch")); else if (haPreposition) @@ -129,11 +132,12 @@ public class CompoundNounInflection implements NounInflection { final Matcher matcher = cmpoundMatcher.matcher(singular); final Noun actNoun = getNoun(matcher); - final String patt = mdernPluralPattern == null ? clasicalPluralPattern : mdernPluralPattern; + final String patt = mdernPluralPattern == null ? clasicalPluralPattern : + mdernPluralPattern; if (haPreposition && hasScratch) return String.format(patt, actNoun.plural(), matcher.group("preposition"), - matcher.group("scratch")); + matcher.group("scratch")); else if (hasScratch) return String.format(patt, actNoun.plural(), matcher.group("scratch")); else if (haPreposition) @@ -149,12 +153,15 @@ public class CompoundNounInflection implements NounInflection { final Noun actNoun = getNoun(matcher); if (haPreposition && hasScratch) - return String.format(mdernPluralPattern, actNoun.modernPlural(), matcher.group("preposition"), - matcher.group("scratch")); + return String.format(mdernPluralPattern, actNoun.modernPlural(), + matcher.group("preposition"), + matcher.group("scratch")); else if (hasScratch) - return String.format(mdernPluralPattern, actNoun.modernPlural(), matcher.group("scratch")); + return String.format(mdernPluralPattern, actNoun.modernPlural(), + matcher.group("scratch")); else if (haPreposition) - return String.format(mdernPluralPattern, actNoun.modernPlural(), matcher.group("preposition")); + return String.format(mdernPluralPattern, actNoun.modernPlural(), + matcher.group("preposition")); else return String.format(mdernPluralPattern, actNoun.modernPlural()); } @@ -167,13 +174,13 @@ public class CompoundNounInflection implements NounInflection { if (haPreposition && hasScratch) return String.format(clasicalPluralPattern, actNoun.classicalPlural(), - matcher.group("preposition"), matcher.group("scratch")); + matcher.group("preposition"), matcher.group("scratch")); else if (hasScratch) return String.format(clasicalPluralPattern, actNoun.classicalPlural(), - matcher.group("scratch")); + matcher.group("scratch")); else if (haPreposition) return String.format(clasicalPluralPattern, actNoun.classicalPlural(), - matcher.group("preposition")); + matcher.group("preposition")); else return String.format(clasicalPluralPattern, actNoun.classicalPlural()); } @@ -189,10 +196,12 @@ public class CompoundNounInflection implements NounInflection { final int prime = 31; int result = 1; - result = prime * result + (clasicalPluralPattern == null ? 0 : clasicalPluralPattern.hashCode()); + result = prime * result + (clasicalPluralPattern == null ? 0 : + clasicalPluralPattern.hashCode()); result = prime * result + (cmpoundMatcher == null ? 0 : cmpoundMatcher.hashCode()); result = prime * result + (haPreposition ? 1231 : 1237); - result = prime * result + (mdernPluralPattern == null ? 0 : mdernPluralPattern.hashCode()); + result = prime * result + (mdernPluralPattern == null ? 0 : + mdernPluralPattern.hashCode()); result = prime * result + (sigularPattern == null ? 0 : sigularPattern.hashCode()); return result; @@ -201,7 +210,9 @@ public class CompoundNounInflection implements NounInflection { @Override public boolean equals(final Object obj) { if (this == obj) return true; + if (obj == null) return false; + if (!(obj instanceof CompoundNounInflection)) return false; final CompoundNounInflection other = (CompoundNounInflection) obj; @@ -230,6 +241,6 @@ public class CompoundNounInflection implements NounInflection { @Override public String toString() { return String.format(TOSTRING_FMT, cmpoundMatcher, sigularPattern, mdernPluralPattern, - clasicalPluralPattern, haPreposition); + clasicalPluralPattern, haPreposition); } } \ No newline at end of file diff --git a/src/main/java/bjc/inflexion/nouns/IrregularNounInflection.java b/src/main/java/bjc/inflexion/nouns/IrregularNounInflection.java index b64b341..f38a138 100644 --- a/src/main/java/bjc/inflexion/nouns/IrregularNounInflection.java +++ b/src/main/java/bjc/inflexion/nouns/IrregularNounInflection.java @@ -22,13 +22,14 @@ package bjc.inflexion.nouns; * */ public class IrregularNounInflection implements NounInflection { - private static final String TOSTRING_FMT = "IrregularNounInflection [singular=%s, modernPlural=%s," - + " classicalPlural=%s, preferClassical=%s]"; + private static final String TOSTRING_FMT = + "IrregularNounInflection [singular=%s, modernPlural=%s," + + " classicalPlural=%s, preferClassical=%s]"; private final String singular; - private final String modernPlural; - private final String classicalPlural; + private final String modernPlural; + private final String classicalPlural; private final boolean preferClassical; @@ -48,9 +49,11 @@ public class IrregularNounInflection implements NounInflection { * Whether the classical form should be preferred if it * is available. */ - public IrregularNounInflection(final String singlar, final String modrnPlural, final String classiclPlural, - final boolean prefrClassical) { + public IrregularNounInflection(final String singlar, final String modrnPlural, + final String classiclPlural, + final boolean prefrClassical) { if (singlar == null) throw new NullPointerException("Singular form must not be null"); + if (modrnPlural == null && classiclPlural == null) throw new NullPointerException("One of modern/classical plural forms must not be null"); @@ -79,7 +82,7 @@ public class IrregularNounInflection implements NounInflection { return false; else { final String msg = String.format("Noun '%s' doesn't belong to this inflection '%s'", noun, - this); + this); throw new InflectionException(msg); } @@ -93,7 +96,7 @@ public class IrregularNounInflection implements NounInflection { return true; else { final String msg = String.format("Noun '%s' doesn't belong to this inflection '%s'", noun, - this); + this); throw new InflectionException(msg); } @@ -106,8 +109,9 @@ public class IrregularNounInflection implements NounInflection { else if (matchesPlural(plural)) return singular; else { - final String msg = String.format("Noun '%s' doesn't belong to this inflection '%s'", plural, - this); + final String msg = String.format("Noun '%s' doesn't belong to this inflection '%s'", + plural, + this); throw new InflectionException(msg); } @@ -120,8 +124,9 @@ public class IrregularNounInflection implements NounInflection { else if (matchesPlural(singlar)) return getPlural(); else { - final String msg = String.format("Noun '%s' doesn't belong to this inflection '%s'", singlar, - this); + final String msg = String.format("Noun '%s' doesn't belong to this inflection '%s'", + singlar, + this); throw new InflectionException(msg); } @@ -143,7 +148,8 @@ public class IrregularNounInflection implements NounInflection { @Override public String toString() { - return String.format(TOSTRING_FMT, singular, modernPlural, classicalPlural, preferClassical); + return String.format(TOSTRING_FMT, singular, modernPlural, classicalPlural, + preferClassical); } @Override @@ -161,7 +167,9 @@ public class IrregularNounInflection implements NounInflection { @Override public boolean equals(final Object obj) { if (this == obj) return true; + if (obj == null) return false; + if (!(obj instanceof IrregularNounInflection)) return false; final IrregularNounInflection other = (IrregularNounInflection) obj; diff --git a/src/main/java/bjc/inflexion/nouns/Nouns.java b/src/main/java/bjc/inflexion/nouns/Nouns.java index 0fbfddd..d63b704 100644 --- a/src/main/java/bjc/inflexion/nouns/Nouns.java +++ b/src/main/java/bjc/inflexion/nouns/Nouns.java @@ -32,15 +32,16 @@ import java.util.regex.Pattern; * */ public class Nouns { - private static final DefaultNounInflection DEFAULT_INFLECTION = new DefaultNounInflection(); + private static final DefaultNounInflection DEFAULT_INFLECTION = new + DefaultNounInflection(); private final Prepositions prepositionDB; - private final Map userIrregulars; - private final List userInflections; + private final Map userIrregulars; + private final List userInflections; - private final Map predefinedIrregulars; - private final List predefinedInflections; + private final Map predefinedIrregulars; + private final List predefinedInflections; /** * Create a new empty noun DB. @@ -71,11 +72,14 @@ public class Nouns { */ public Noun getNoun(final String noun) { if (userIrregulars.containsKey(noun)) return new Noun(noun, userIrregulars.get(noun)); + for (final NounInflection inflect : userInflections) { if (inflect.matches(noun)) return new Noun(noun, inflect); } - if (predefinedIrregulars.containsKey(noun)) return new Noun(noun, predefinedIrregulars.get(noun)); + if (predefinedIrregulars.containsKey(noun)) return new Noun(noun, + predefinedIrregulars.get(noun)); + for (final NounInflection inflect : predefinedInflections) { if (inflect.matches(noun)) return new Noun(noun, inflect); } @@ -100,6 +104,7 @@ public class Nouns { if (ln.startsWith("#")) { continue; } + if (ln.equals("")) { continue; } @@ -142,6 +147,7 @@ public class Nouns { if (modernPlural.equals("")) { modernPlural = null; } + if (classicalPlural.equals("")) { classicalPlural = null; } @@ -162,14 +168,16 @@ public class Nouns { } private void handleCompoundPlural(final String singular, final String modernPlural, - final String classicalPlural) { + final String classicalPlural) { String actSingular = singular; String actModern = modernPlural == null ? "" : modernPlural; String actClassical = classicalPlural == null ? "" : classicalPlural; - final String singularPatt = actSingular.replaceAll(Pattern.quote("(SING)"), "(?\\\\w+)"); + final String singularPatt = actSingular.replaceAll(Pattern.quote("(SING)"), + "(?\\\\w+)"); final String modernPatt = actModern.replaceAll(Pattern.quote("(PL)"), "(?\\\\w+)"); - final String classicalPatt = actClassical.replaceAll(Pattern.quote("(PL)"), "(?\\\\w+)"); + final String classicalPatt = actClassical.replaceAll(Pattern.quote("(PL)"), + "(?\\\\w+)"); actSingular = actSingular.replaceAll(Pattern.quote("(SING)"), "%1\\$s"); actModern = actModern.replaceAll(Pattern.quote("(PL)"), "%1\\$s"); @@ -179,10 +187,11 @@ public class Nouns { if (singular.contains("(PREP)")) { handleCompoundPreposition(actSingular, actModern, actClassical, singularPatt, modernPatt, - classicalPatt, inflections); + classicalPatt, inflections); } else { - handleCompound(actSingular, actModern, actClassical, singularPatt, modernPatt, classicalPatt, - inflections); + handleCompound(actSingular, actModern, actClassical, singularPatt, modernPatt, + classicalPatt, + inflections); } for (final NounInflection inf : inflections) { @@ -190,60 +199,71 @@ public class Nouns { } } - private void handleCompound(final String actSinglar, final String actModrn, final String actClasscal, - final String singularPtt, final String modernPtt, final String classicalPtt, - final List inflections) { + private void handleCompound(final String actSinglar, final String actModrn, + final String actClasscal, + final String singularPtt, final String modernPtt, final String classicalPtt, + final List inflections) { if (singularPtt.contains("*")) { - final String singularPatt = singularPtt.replaceAll(Pattern.quote("*"), "(?\\\\w+)"); + final String singularPatt = singularPtt.replaceAll(Pattern.quote("*"), + "(?\\\\w+)"); final String modernPatt = modernPtt.replaceAll(Pattern.quote("*"), "(?\\\\w+)"); - final String classicalPatt = classicalPtt.replaceAll(Pattern.quote("*"), "(?\\\\w+)"); + final String classicalPatt = classicalPtt.replaceAll(Pattern.quote("*"), + "(?\\\\w+)"); final String actSingular = actSinglar.replaceAll(Pattern.quote("*"), "%2\\$s"); final String actModern = actModrn.replaceAll(Pattern.quote("*"), "%2\\$s"); final String actClassical = actClasscal.replaceAll(Pattern.quote("*"), "%2\\$s"); handleNonpluralCompound(actSingular, actModern, actClassical, singularPatt, modernPatt, - classicalPatt, inflections, true); + classicalPatt, inflections, true); } else { - handleNonpluralCompound(actSinglar, actModrn, actClasscal, singularPtt, modernPtt, classicalPtt, - inflections, false); + handleNonpluralCompound(actSinglar, actModrn, actClasscal, singularPtt, modernPtt, + classicalPtt, + inflections, false); } } - private void handleNonpluralCompound(final String actSinglar, final String actModrn, final String actClasscal, - final String singularPatt, final String modernPatt, final String classicalPatt, - final List inflections, final boolean hasScratch) { + private void handleNonpluralCompound(final String actSinglar, final String actModrn, + final String actClasscal, + final String singularPatt, final String modernPatt, final String classicalPatt, + final List inflections, final boolean hasScratch) { final String actModern = actModrn.equals("") ? null : actModrn; final String actClassical = actClasscal.equals("") ? null : actClasscal; - final CompoundNounInflection singularInflection = new CompoundNounInflection(this, prepositionDB, - Pattern.compile(singularPatt), actSinglar, actModern, actClassical, false, hasScratch); + final CompoundNounInflection singularInflection = new CompoundNounInflection(this, + prepositionDB, + Pattern.compile(singularPatt), actSinglar, actModern, actClassical, false, hasScratch); inflections.add(singularInflection); if (!modernPatt.equals("")) { - final CompoundNounInflection modernInflection = new CompoundNounInflection(this, prepositionDB, - Pattern.compile(modernPatt), actSinglar, actModern, actClassical, false, - hasScratch); + final CompoundNounInflection modernInflection = new CompoundNounInflection(this, + prepositionDB, + Pattern.compile(modernPatt), actSinglar, actModern, actClassical, false, + hasScratch); inflections.add(modernInflection); } if (!classicalPatt.equals("")) { final CompoundNounInflection classicalInflection = new CompoundNounInflection(this, - prepositionDB, Pattern.compile(classicalPatt), actSinglar, actModern, - actClassical, false, hasScratch); + prepositionDB, Pattern.compile(classicalPatt), actSinglar, actModern, + actClassical, false, hasScratch); inflections.add(classicalInflection); } } - private void handleCompoundPreposition(final String actSinglar, final String actModrn, final String actClasscal, - final String singularPtt, final String modernPtt, final String classicalPtt, - final List inflections) { - String singularPatt = singularPtt.replaceAll(Pattern.quote("(PREP)"), "(?\\\\w+)"); - String modernPatt = modernPtt.replaceAll(Pattern.quote("(PREP)"), "(?\\\\w+)"); - String classicalPatt = classicalPtt.replaceAll(Pattern.quote("(PREP)"), "(?\\\\w+)"); + private void handleCompoundPreposition(final String actSinglar, final String actModrn, + final String actClasscal, + final String singularPtt, final String modernPtt, final String classicalPtt, + final List inflections) { + String singularPatt = singularPtt.replaceAll(Pattern.quote("(PREP)"), + "(?\\\\w+)"); + String modernPatt = modernPtt.replaceAll(Pattern.quote("(PREP)"), + "(?\\\\w+)"); + String classicalPatt = classicalPtt.replaceAll(Pattern.quote("(PREP)"), + "(?\\\\w+)"); String actSingular = actSinglar.replaceAll(Pattern.quote("(PREP)"), "%2\\$s"); String actModern = actModrn.replaceAll(Pattern.quote("(PREP)"), "%2\\$s"); @@ -262,40 +282,43 @@ public class Nouns { actClassical = actClassical.equals("") ? null : actClassical; addCompoundInflections(actSingular, actModern, actClassical, singularPatt, modernPatt, - classicalPatt, inflections, true); + classicalPatt, inflections, true); } else { addCompoundInflections(actSingular, actModern, actClassical, singularPatt, modernPatt, - classicalPatt, inflections, false); + classicalPatt, inflections, false); } } - private void addCompoundInflections(final String actSingular, final String actModern, final String actClassical, - final String singularPatt, final String modernPatt, final String classicalPatt, - final List inflections, final boolean hasScratch) { - final CompoundNounInflection singularInflection = new CompoundNounInflection(this, prepositionDB, - Pattern.compile(singularPatt), actSingular, actModern, actClassical, true, hasScratch); + private void addCompoundInflections(final String actSingular, final String actModern, + final String actClassical, + final String singularPatt, final String modernPatt, final String classicalPatt, + final List inflections, final boolean hasScratch) { + final CompoundNounInflection singularInflection = new CompoundNounInflection(this, + prepositionDB, + Pattern.compile(singularPatt), actSingular, actModern, actClassical, true, hasScratch); inflections.add(singularInflection); if (!modernPatt.equals("")) { - final CompoundNounInflection modernInflection = new CompoundNounInflection(this, prepositionDB, - Pattern.compile(modernPatt), actSingular, actModern, actClassical, true, - hasScratch); + final CompoundNounInflection modernInflection = new CompoundNounInflection(this, + prepositionDB, + Pattern.compile(modernPatt), actSingular, actModern, actClassical, true, + hasScratch); inflections.add(modernInflection); } if (!classicalPatt.equals("")) { final CompoundNounInflection classicalInflection = new CompoundNounInflection(this, - prepositionDB, Pattern.compile(classicalPatt), actSingular, actModern, - actClassical, true, hasScratch); + prepositionDB, Pattern.compile(classicalPatt), actSingular, actModern, + actClassical, true, hasScratch); inflections.add(classicalInflection); } } private void handleIncompletePlural(final String singular, final String modernPlural, - final String classicalPlural) { + final String classicalPlural) { final InflectionAffix singularAffix = incomplete(singular.substring(1)); InflectionAffix modernAffix = null; @@ -304,18 +327,20 @@ public class Nouns { if (modernPlural != null) { modernAffix = incomplete(modernPlural.substring(1)); } + if (classicalPlural != null) { classicalAffix = incomplete(classicalPlural.substring(1)); } - final CategoricalNounInflection inflection = new CategoricalNounInflection(singularAffix, modernAffix, - classicalAffix); + final CategoricalNounInflection inflection = new CategoricalNounInflection(singularAffix, + modernAffix, + classicalAffix); predefinedInflections.add(inflection); } private void handleCompletePlural(final String singular, final String modernPlural, - final String classicalPlural) { + final String classicalPlural) { final InflectionAffix singularAffix = complete(singular.substring(1)); InflectionAffix modernAffix = null; @@ -324,20 +349,23 @@ public class Nouns { if (modernPlural != null) { modernAffix = complete(modernPlural.substring(1)); } + if (classicalPlural != null) { classicalAffix = complete(classicalPlural.substring(1)); } - final CategoricalNounInflection inflection = new CategoricalNounInflection(singularAffix, modernAffix, - classicalAffix); + final CategoricalNounInflection inflection = new CategoricalNounInflection(singularAffix, + modernAffix, + classicalAffix); predefinedInflections.add(inflection); } private void handleIrregularPlural(final String singular, final String modernPlural, - final String classicalPlural) { - final IrregularNounInflection inflection = new IrregularNounInflection(singular, modernPlural, - classicalPlural, false); + final String classicalPlural) { + final IrregularNounInflection inflection = new IrregularNounInflection(singular, + modernPlural, + classicalPlural, false); if (!predefinedIrregulars.containsKey(singular)) { predefinedIrregulars.put(singular, inflection); @@ -346,8 +374,9 @@ public class Nouns { if (modernPlural != null && !predefinedIrregulars.containsKey(modernPlural)) { predefinedIrregulars.put(modernPlural, inflection); } + if (classicalPlural != null && !predefinedIrregulars.containsKey(classicalPlural)) { predefinedIrregulars.put(classicalPlural, inflection); } } -} \ No newline at end of file +} diff --git a/src/main/java/bjc/inflexion/nouns/SimpleInflectionAffix.java b/src/main/java/bjc/inflexion/nouns/SimpleInflectionAffix.java index 00b9689..e50fe5c 100644 --- a/src/main/java/bjc/inflexion/nouns/SimpleInflectionAffix.java +++ b/src/main/java/bjc/inflexion/nouns/SimpleInflectionAffix.java @@ -25,7 +25,8 @@ import java.util.regex.Pattern; * */ public class SimpleInflectionAffix implements InflectionAffix { - private static final String TOSTRING_FMT = "SimpleInflectionAffix [affixTemplate=%s, affixMatcher=%s]"; + private static final String TOSTRING_FMT = + "SimpleInflectionAffix [affixTemplate=%s, affixMatcher=%s]"; private final String affixTmplate; @@ -85,7 +86,9 @@ public class SimpleInflectionAffix implements InflectionAffix { @Override public boolean equals(final Object obj) { if (this == obj) return true; + if (obj == null) return false; + if (!(obj instanceof SimpleInflectionAffix)) return false; final SimpleInflectionAffix other = (SimpleInflectionAffix) obj; -- cgit v1.2.3