kana-romaji
Version:
A simple function to convert Hiragana and Katakana into Romaji representation.
166 lines (164 loc) • 5.22 kB
text/typescript
import { toRomaji } from "../../src/kana-romaji";
describe('kanaRomaji.ts', () => {
test.each([
['ちちゅうかい', 'chichūkai'],
['しんぶんし', 'shinbunshi'],
['いっぱんじん', 'ippanjin'],
['しょうがくせい', 'shōgakusei'],
['おぅ', 'ou'],
['おっ', 'o'],
['かちょう', 'kachō'],
['ひょう', 'hyō'],
['みょう', 'myō'],
['ぎょう', 'gyō'],
['じょう', 'jō'],
['ょゅぅ', 'yoyuu'],
['ひょうご', 'hyōgo'],
['ひゅーご', 'hyūgo'],
['ふぃーちゅあー', 'fīchuā'],
['ふゅーちゃー', 'fyūchā'],
['みふぁそ', 'mifaso'],
['ふらんすご', 'furansugo'],
['ふぁみりー', 'famirī'],
['ふらの', 'furano'],
['ふりょう', 'furyō'],
['おんおふすいっち', 'on’ofusuitchi'],
['こんにゃく', 'konnyaku'],
['あんま', 'anma'],
['おかあさん', 'okāsan'],
['きーきー', 'kīkī'],
['けーき', 'kēki'],
['ケーキ', 'KĒKI'],
['とおり', 'tōri'],
['きいはんとう', 'kīhantō'],
['ろくおんテープ', 'rokuonTĒPU'],
['S.O.S.はエスオーエス', 'S.O.S.haESUŌESU'],
['こうこうせい、しょうがくせい、だいがくせい', 'kōkōsei、shōgakusei、daigakusei'],
['ヴュー', 'VYŪ'],
['ゔぃ', 'vi'],
['イェ', 'YE'],
['ウィ', 'WI'],
['ウェ', 'WE'],
['ウォ', 'WO'],
['ヴァ', 'VA'],
['ヴィ', 'VI'],
['ヴ', 'VU'],
['ヴェ', 'VE'],
['ヴォ', 'VO'],
['ヴュ', 'VYU'],
['スィ', 'SI'],
['シェ', 'SHE'],
['ズィ', 'ZI'],
['ジェ', 'JE'],
['ティ', 'TI'],
['トゥ', 'TU'],
['チェ', 'CHE'],
['ディ', 'DI'],
['ドゥ', 'DU'],
['ヂェ', 'JE'],
['ファ', 'FA'],
['フィ', 'FI'],
['フェ', 'FE'],
['フォ', 'FO'],
['いぇ', 'ye'],
['うぃ', 'wi'],
['うぇ', 'we'],
['うぉ', 'wo'],
['ゔぁ', 'va'],
['ゔぃ', 'vi'],
['ゔ', 'vu'],
['ゔぇ', 've'],
['ゔぉ', 'vo'],
['ゔゅ', 'vyu'],
['すぃ', 'si'],
['しぇ', 'she'],
['ずぃ', 'zi'],
['じぇ', 'je'],
['てぃ', 'ti'],
['とぅ', 'tu'],
['ちぇ', 'che'],
['でぃ', 'di'],
['どぅ', 'du'],
['ぢぇ', 'je'],
['ふぁ', 'fa'],
['ふぃ', 'fi'],
['ふぇ', 'fe'],
['ふぉ', 'fo'],
['きゃ', 'kya'],
['きゅ', 'kyu'],
['きょ', 'kyo'],
['ぎゃ', 'gya'],
['ぎゅ', 'gyu'],
['ぎょ', 'gyo'],
['しゃ', 'sha'],
['しゅ', 'shu'],
['しょ', 'sho'],
['じゃ', 'ja'],
['じゅ', 'ju'],
['じょ', 'jo'],
['ちゃ', 'cha'],
['ちゅ', 'chu'],
['ちょ', 'cho'],
['ぢゃ', 'ja'],
['ぢゅ', 'ju'],
['ぢょ', 'jo'],
['にゃ', 'nya'],
['にゅ', 'nyu'],
['にょ', 'nyo'],
['ひゃ', 'hya'],
['ひゅ', 'hyu'],
['ひょ', 'hyo'],
['びゃ', 'bya'],
['びゅ', 'byu'],
['びょ', 'byo'],
['ぴゃ', 'pya'],
['ぴゅ', 'pyu'],
['ぴょ', 'pyo'],
['みゃ', 'mya'],
['みゅ', 'myu'],
['みょ', 'myo'],
['りゃ', 'rya'],
['りゅ', 'ryu'],
['りょ', 'ryo'],
// sh で始まる音節の前では、促音は s で表します。
// ch と ts の前では、t を使います。
['かった', 'katta'],
['いっぽう', 'ippō'],
['ぶっだ', 'budda'],
['あっしゅく', 'asshuku'],
['あっちゃく', 'atchaku'],
['よっつ', 'yottsu'],
['ほんい', 'hon’i'],
['ほんやく', 'hon’yaku'],
['てゃ', 'tya'],
['てゅ', 'tyu'],
['てょ', 'tyo'],
['とぁ', 'twa'],
['ぐぁ', 'gwa'],
['ぐぃ', 'gwi'],
['ぐぇ', 'gwe'],
['ぐぉ', 'gwo'],
['ぐゎ', 'gwa'],
['くぁ', 'kwa'],
['くぃ', 'kwi'],
['くぇ', 'kwe'],
['くぉ', 'kwo'],
['くゎ', 'kwa'],
['ひぇ', 'hye'],
['びぇ', 'bye'],
['ぴぇ', 'pye'],
['きぇ', 'kye'],
['ツァー', 'TSĀ'],
['ツィゴイネル', 'TSIGOINERU'],
['ツェツェばえ', 'TSETSEbae'],
['ケカッツォ', 'KEKATTSO'],
// Issue with long vowel sequences: syllable + vowel-only + long vowel marker
['ユキノオー', 'YUKINOŌ'],
['わあーい', 'waāi'],
// Issue with 'n' apostrophe before numbers and Latin characters
['ポリゴン2', 'PORIGON2'],
['ポリゴンZ', 'PORIGONZ'],
])('translates %s into %s', (input, expected) => {
expect(toRomaji(input)).toBe(expected);
})
})