X-Git-Url: http://gitweb.fperrin.net/?a=blobdiff_plain;f=src%2Fcom%2Fhughes%2Fandroid%2Fdictionary%2Fengine%2FNormalizeComparator.java;h=c744334b150ea5073aa9081e71915a40de606656;hb=c30780dce1351b55c0e94b05dd8ef327aa31cebd;hp=82f0feac6af99b3c61e4c98ac8958db99d212436;hpb=71e3edc548080b5c6abcd043652035397c6a41d8;p=Dictionary.git diff --git a/src/com/hughes/android/dictionary/engine/NormalizeComparator.java b/src/com/hughes/android/dictionary/engine/NormalizeComparator.java index 82f0fea..c744334 100644 --- a/src/com/hughes/android/dictionary/engine/NormalizeComparator.java +++ b/src/com/hughes/android/dictionary/engine/NormalizeComparator.java @@ -20,36 +20,35 @@ import java.util.Comparator; public class NormalizeComparator implements Comparator { - final Transliterator normalizer; - final Comparator comparator; - int version; + private final Transliterator normalizer; + private final Comparator comparator; + private final int version; public NormalizeComparator(final Transliterator normalizer, - final Comparator comparator, int version) { + final Comparator comparator, int version) { this.normalizer = normalizer; this.comparator = comparator; - this.version = version; + this.version = version; } - // Handles comparison between items starting with "-", returns 0 for all others. - public static int compareWithoutLeadingDash(final String a, final String b, final Comparator c, int 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 c, int version) { if (version < 7) return 0; - if (a.startsWith("-") || b.startsWith("-")) - { - String s1 = a; - String s2 = b; - if (s1.startsWith("-")) s1 = s1.substring(1); - if (s2.startsWith("-")) s2 = s2.substring(1); - return c.compare(s1, s2); - } - return 0; + 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.transform(s1); - final String n2 = normalizer.transform(s2); - int cn = compareWithoutLeadingDash(n1, n2, comparator, version); + final String n1 = normalizer == null ? s1.toLowerCase() : normalizer.transform(s1); + final String n2 = normalizer == null ? s2.toLowerCase() : normalizer.transform(s2); + int cn = compareWithoutDash(n1, n2, comparator, version); if (cn != 0) { return cn; }