package com.hughes.android.dictionary.engine;
-import com.ibm.icu.text.Transliterator;
-
import java.util.Comparator;
+import com.ibm.icu.text.Transliterator;
+
public class NormalizeComparator implements Comparator<String> {
private final Transliterator normalizer;
this.version = version;
}
+ public static String withoutDash(final String a) {
+ return a.replace("-", "").replace("þ", "th").replace("Þ", "Th");
+ }
+
// Handles comparison between items containing "-".
// Also replaces other problematic cases like "thorn".
public static int compareWithoutDash(final String a, final String b, final Comparator<Object> c, int version) {
if (version < 7) return 0;
- String s1 = a.replace("-", "").replace("þ", "th").replace("Þ", "Th");
- String s2 = b.replace("-", "").replace("þ", "th").replace("Þ", "Th");
+ String s1 = withoutDash(a);
+ String s2 = withoutDash(b);
return c.compare(s1, s2);
}
- @Override
- public int compare(final String s1, final String s2) {
- final String n1 = normalizer == null ? s1.toLowerCase() : normalizer.transform(s1);
- final String n2 = normalizer == null ? s2.toLowerCase() : normalizer.transform(s2);
+ public String normalize(String s) {
+ return normalizer == null ? s.toLowerCase() : normalizer.transform(s);
+ }
+
+ public int compareNormalized(final String s1, final String s2, final String n1, final String n2) {
int cn = compareWithoutDash(n1, n2, comparator, version);
if (cn != 0) {
return cn;
return comparator.compare(s1, s2);
}
+ @Override
+ public int compare(final String s1, final String s2) {
+ final String n1 = normalize(s1);
+ final String n2 = normalize(s2);
+ return compareNormalized(s1, s2, n1, n2);
+ }
+
}