comparator function

int comparator(
  1. String first,
  2. String second
)

Implementation

int comparator(String first, String second) {

  if (first.length > 0 && second.length > 0) {
    if (!isThaiCharacter(first) || !isThaiCharacter(second)) {
      return first.compareTo(second);
    }

    var rmFirstToneMark = removeToneMarks(first);
    var rmSecondToneMark = removeToneMarks(second);

    var firstTHChar = getFirstThaiAlphabet(rmFirstToneMark);
    var secondTHChar = getFirstThaiAlphabet(rmSecondToneMark);

    if (firstTHChar == null || secondTHChar == null) {
      return first.compareTo(second);
    }

    if (firstTHChar != secondTHChar) {
      return firstTHChar.compareTo(secondTHChar);
    }

    if (rmFirstToneMark != rmSecondToneMark) {
      return rmFirstToneMark.compareTo(rmSecondToneMark);
    }
  }

  return first.compareTo(second);
}