diff options
| author | Benjamin J. Culkin <bjculkin@mix.wvu.edu> | 2017-09-15 15:21:34 -0300 |
|---|---|---|
| committer | Benjamin J. Culkin <bjculkin@mix.wvu.edu> | 2017-09-15 15:21:34 -0300 |
| commit | 46cb1f6c030991d314d0ef1fafa53e53ef3e03c9 (patch) | |
| tree | 35944ecbd4c7e4af3aecc30520dfa76f636cbdb6 /src/main/java/bjc/inflexion/InflectionML.java | |
| parent | eb78499c6f5c991d6abaca766ae0831e411c74af (diff) | |
Format
Diffstat (limited to 'src/main/java/bjc/inflexion/InflectionML.java')
| -rw-r--r-- | src/main/java/bjc/inflexion/InflectionML.java | 22 |
1 files changed, 14 insertions, 8 deletions
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<String> ESUB_OPT = Arrays.asList("a", "s", "w"); - private static Pattern FORM_MARKER = Pattern - .compile("<(?<command>[#N])(?<options>[^:]*):(?<text>[^>]*)>"); + private static final List<String> ESUB_OPT = Arrays.asList("a", "s", "w"); + private static Pattern FORM_MARKER = Pattern + .compile("<(?<command>[#N])(?<options>[^:]*):(?<text>[^>]*)>"); 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<String> 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); |
