toKana method

String toKana (
  1. String input
)

Converts all characters of the input from romaji to kana.

Lowercase text will result in hiragana and uppercase text will result in katakana.

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

toKana('onaji BUTTSUUJI'); // "おなじ ブッツウジ"
toKana('ONAJI buttsuuji'); // "オナジ ぶっつうじ"
toKana('座禅‘zazen’スタイル'); // "座禅「ざぜん」スタイル"
toKana('batsuge-mu'); // "ばつげーむ"
toKana('!?.:/,~-‘’“”[](){}'); // "!?。:・、〜ー「」『』[](){}"

Implementation

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

  final kanaTokens = _MappingParser(config.romanization.romajiToKanaMap)
      .apply(input.toLowerCase());

  return kanaTokens.map((kanaToken) {
    final start = kanaToken.start;
    final end = kanaToken.end;
    final kana = kanaToken.value;

    if (kana == null) {
      return input.substring(start);
    }
    final enforceKatakana =
        input.substring(start, end).chars.every(_isCharUpperCase);

    return enforceKatakana ? _hiraganaToKatakana(kana) : kana;
  }).join();
}