toRomaji method

String toRomaji (
  1. String input
)

Converts all kana characters of the input to romaji.

The input String cannot be null. If an empty String is provided, an empty String will be returned immediately.

If this config's KanaKitConfig.upcaseKatakana is true, katakana characters will be converted to uppercase characters. ignored.

// With KanaKitConfig.upcaseKatakana == false (default)
toRomaji('ひらがな カタカナ'); // "hiragana katakana"
toRomaji('げーむ ゲーム'); // "ge-mu geemu"
// With KanaKitConfig.upcaseKatakana == true
toRomaji('ひらがな カタカナ'); // "hiragana KATAKANA"
toRomaji('げーむ ゲーム'); // "ge-mu GEEMU"

Implementation

String toRomaji(String input) {
  assert(input != null);
  if (input.isEmpty) {
    return input;
  }

  final hiragana = _katakanaToHiragana(
    input,
    toRomaji: toRomaji,
    destinationIsRomaji: true,
  );
  final romajiTokens =
      _MappingParser(config.romanization.kanaToRomajiMap).apply(hiragana);

  return romajiTokens.map((romajiToken) {
    final start = romajiToken.start;
    final end = romajiToken.end;
    final romaji = romajiToken.value;

    final makeUpperCase =
        config.upcaseKatakana && isKatakana(input.substring(start, end));

    if (makeUpperCase) {
      return romaji.toUpperCase();
    }
    return romaji;
  }).join();
}