// Copyright 2011 Google Inc. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package com.hughes.android.dictionary.engine;

import com.ibm.icu.text.Transliterator;

import java.util.Comparator;

public class NormalizeComparator implements Comparator<String> {

    final Transliterator normalizer;
    final Comparator<Object> comparator;
    int version;

    public NormalizeComparator(final Transliterator normalizer,
                               final Comparator<Object> comparator, int version) {
        this.normalizer = normalizer;
        this.comparator = comparator;
        this.version = version;
    }

    // Handles comparison between items containing "-".
    public static int compareWithoutDash(final String a, final String b, final Comparator c, int version) {
        if (version < 7) return 0;
        String s1 = a.replace("-", "");
        String s2 = b.replace("-", "");
        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 = compareWithoutDash(n1, n2, comparator, version);
        if (cn != 0) {
            return cn;
        }
        cn = comparator.compare(n1, n2);
        if (cn != 0) {
            return cn;
        }
        return comparator.compare(s1, s2);
    }

}

@@ -1201,16 +1201,75 @@
 ng %22-%22.%0A
+    // Also replaces other problematic cases like %22thorn%22.%0A
     publ
@@ -1445,46 +1445,122 @@
  %22%22)
-;%0A        String s2 = b.replace(%22-%22, %22
+.replace(%22%C3%BE%22, %22th%22).replace(%22%C3%9E%22, %22Th%22);%0A        String s2 = b.replace(%22-%22, %22%22).replace(%22%C3%BE%22, %22th%22).replace(%22%C3%9E%22, %22Th
 %22);%0A

Fix "thorn" issue in English-Norwegian dictionary.