Author: ggregory Date: Sat Aug 6 16:51:17 2011 New Revision: 1154541 URL: http://svn.apache.org/viewvc?rev=1154541&view=rev Log: [CODEC-125] Implement a Beider-Morse phonetic matching codec. Apply Matthew's patch https://issues.apache.org/jira/secure/attachment/12489569/fixmeInvariant.patch. This patch hoists the l-invariant code out of the loop over l. The d'ortley test input string exercises this branch. The "van helsing" input string should be exercising the alternate branch. Thank you MP!
Modified: commons/proper/codec/trunk/src/java/org/apache/commons/codec/language/bm/PhoneticEngine.java Modified: commons/proper/codec/trunk/src/java/org/apache/commons/codec/language/bm/PhoneticEngine.java URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/java/org/apache/commons/codec/language/bm/PhoneticEngine.java?rev=1154541&r1=1154540&r2=1154541&view=diff ============================================================================== --- commons/proper/codec/trunk/src/java/org/apache/commons/codec/language/bm/PhoneticEngine.java (original) +++ commons/proper/codec/trunk/src/java/org/apache/commons/codec/language/bm/PhoneticEngine.java Sat Aug 6 16:51:17 2011 @@ -287,6 +287,11 @@ public class PhoneticEngine { input = input.toLowerCase(Locale.ENGLISH).replace('-', ' ').trim(); if (this.nameType == NameType.GENERIC) { + if (input.length() >= 2 && input.substring(0, 2).equals("d'")) { // check for d' + String remainder = input.substring(2); + String combined = "d" + remainder; + return "(" + encode(remainder) + ")-(" + encode(combined) + ")"; + } for (String l : NAME_PREFIXES.get(this.nameType)) { // handle generic prefixes if (input.startsWith(l + " ")) { @@ -295,12 +300,6 @@ public class PhoneticEngine { String combined = l + remainder; // input with prefix without space return "(" + encode(remainder) + ")-(" + encode(combined) + ")"; } - // fixme: this case is invariant on l - else if (input.length() >= 2 && input.substring(0, 2).equals("d'")) { // check for d' - String remainder = input.substring(2); - String combined = "d" + remainder; - return "(" + encode(remainder) + ")-(" + encode(combined) + ")"; - } } }