diff options
| -rw-r--r-- | src/main/java/bjc/inflexion/InflectionML.java | 22 | ||||
| -rw-r--r-- | src/test/java/bjc/inflexion/InflectionMLTest.java | 5 |
2 files changed, 24 insertions, 3 deletions
diff --git a/src/main/java/bjc/inflexion/InflectionML.java b/src/main/java/bjc/inflexion/InflectionML.java index f1e7b00..46cbc59 100644 --- a/src/main/java/bjc/inflexion/InflectionML.java +++ b/src/main/java/bjc/inflexion/InflectionML.java @@ -88,8 +88,26 @@ public class InflectionML { final Set<String> optionSet = new HashSet<>(); - for (int i = 1; i <= options.length(); i++) { - optionSet.add(options.substring(i - 1, i)); + boolean doCaseFold = false; + + if (!options.equals("")) { + if (options.matches("(?:[a-z]*[A-Z]+[a-z])+")) { + doCaseFold = true; + } + + for (int i = 0; i < options.length(); i++) { + char ci = options.charAt(i); + String opt = Character.toString(ci); + + if (doCaseFold) { + if (Character.isUpperCase(ci)) + opt = opt.toLowerCase(); + else + continue; + } + + optionSet.add(opt); + } } switch (command) { diff --git a/src/test/java/bjc/inflexion/InflectionMLTest.java b/src/test/java/bjc/inflexion/InflectionMLTest.java index 37cbce9..8c44881 100644 --- a/src/test/java/bjc/inflexion/InflectionMLTest.java +++ b/src/test/java/bjc/inflexion/InflectionMLTest.java @@ -8,7 +8,7 @@ import static bjc.inflexion.InflectionML.inflect; public class InflectionMLTest { @Test - public void testNumDirective() { + public void testML() { assertEquals("no results", inflect("<#n:0> <N:results>")); assertEquals("7 results", inflect("<#n:7> <N:results>")); @@ -23,5 +23,8 @@ public class InflectionMLTest { assertEquals("an outcome", inflect("<#a:1> <N:outcomes>")); assertEquals("3 outcomes", inflect("<#a:3> <N:outcomes>")); + + assertEquals("5 things", inflect("<#a:5> <Noun:things>")); + assertEquals("a thing", inflect("<#An:1> <Noun:things>")); } } |
