unicodeToMenksoftSameIndex method

String unicodeToMenksoftSameIndex(
  1. String inputString
)

Implementation

String unicodeToMenksoftSameIndex(String inputString) {
  if (inputString.isEmpty) return '';

  final outputString = StringBuffer();
  final mongolWord = StringBuffer();

  // Loop through characters in string
  final length = inputString.length;
  for (var i = 0; i < length; i++) {
    final codeUnit = inputString.codeUnitAt(i);
    if (isMongolian(codeUnit)) {
      mongolWord.writeCharCode(codeUnit);
      continue;
    }

    if (mongolWord.length > 0) {
      _appendMongolWord(outputString, mongolWord);
      mongolWord.clear();
    }

    // NNBS starts a new Mongol word but is not itself a Mongol char
    if (codeUnit == Unicode.NNBS) {
      mongolWord.writeCharCode(Unicode.NNBS);
      continue;
    }

    if (_isConvertiblePunctuation(codeUnit)) {
      final menksoftPunctuation =
          MongolWord.convertPunctuationToMenksoftCode(codeUnit);
      outputString.writeCharCode(menksoftPunctuation);
      continue;
    }

    // non-Mongol character
    outputString.writeCharCode(codeUnit);
  }

  // Add any final substring
  if (mongolWord.length > 0) _appendMongolWord(outputString, mongolWord);

  return outputString.toString();
}