From f8eff578b94fece2d02a15104b540537c2a6d0cc Mon Sep 17 00:00:00 2001 From: bculkin2442 Date: Sun, 16 Sep 2018 22:28:05 -0400 Subject: Case folding options --- src/main/java/bjc/inflexion/InflectionML.java | 22 ++++++++++++++++++++-- src/test/java/bjc/inflexion/InflectionMLTest.java | 5 ++++- 2 files changed, 24 insertions(+), 3 deletions(-) (limited to 'src') 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 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> ")); assertEquals("7 results", inflect("<#n:7> ")); @@ -23,5 +23,8 @@ public class InflectionMLTest { assertEquals("an outcome", inflect("<#a:1> ")); assertEquals("3 outcomes", inflect("<#a:3> ")); + + assertEquals("5 things", inflect("<#a:5> ")); + assertEquals("a thing", inflect("<#An:1> ")); } } -- cgit v1.2.3