toKana method
- 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();
}