UNPKG

romaji-fuzzy-search

Version:

Generates a regular expression for "Romaji Fuzzy Search"

324 lines (323 loc) 12.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.indexedRomajiDictionary = exports.romajiDictionary = exports.convertHiraganaToKatakana = void 0; /** * ひらがな文字をカタカナ文字へ変換する。 * * 渡せることを想定しているひらがなは、以下の範囲) * - http://www.unicode.org/charts/PDF/U3040.pdf の 3041-3094, 309D, 309E 。 * - 正規表現にすると /[ぁ-ゔゝゞ]/ の範囲。 * * それらを以下のカタカナへ変換する) * - http://www.unicode.org/charts/PDF/U30A0.pdf の 30A0-30F4, 30FD, 30FE 。 * - 正規表現にすると /[ァ-ヴヽヾ]/ の範囲。 */ const convertHiraganaToKatakana = (text) => { let result = ''; let pointer = 0; let codePoint; while (codePoint = text.codePointAt(pointer)) { if (codePoint === undefined) { break; } else if (codePoint < 12353 || codePoint > 12436 && codePoint !== 12445 && codePoint !== 12446) { throw new Error('Can not convert the code point to a katakana.'); } result += String.fromCodePoint(codePoint + 96); pointer++; } return result; }; exports.convertHiraganaToKatakana = convertHiraganaToKatakana; const hiraWithKata = (hiragana) => { return [hiragana, exports.convertHiraganaToKatakana(hiragana)]; }; exports.romajiDictionary = [ // // 1 文字 // ['a', ...hiraWithKata('あ')], ['i', ...hiraWithKata('い')], ['u', ...hiraWithKata('う')], ['e', ...hiraWithKata('え')], ['o', ...hiraWithKata('お')], ['n', ...hiraWithKata('ん')], // TODO: ひらなが・カタカナの分類ではない。 ['-', 'ー', 'ー'], // // 2 文字 // ['la', ...hiraWithKata('ぁ')], ['li', ...hiraWithKata('ぃ')], ['lu', ...hiraWithKata('ぅ')], ['le', ...hiraWithKata('ぇ')], ['lo', ...hiraWithKata('ぉ')], ['xa', ...hiraWithKata('ぁ')], ['xi', ...hiraWithKata('ぃ')], ['xu', ...hiraWithKata('ぅ')], ['xe', ...hiraWithKata('ぇ')], ['xo', ...hiraWithKata('ぉ')], ['va', ...hiraWithKata('ゔぁ')], ['vi', ...hiraWithKata('ゔぃ')], ['vu', ...hiraWithKata('ゔ')], ['ve', ...hiraWithKata('ゔぇ')], ['vo', ...hiraWithKata('ゔぉ')], ['ka', ...hiraWithKata('か')], ['ki', ...hiraWithKata('き')], ['ku', ...hiraWithKata('く')], ['ke', ...hiraWithKata('け')], ['ko', ...hiraWithKata('こ')], ['qa', ...hiraWithKata('くぁ')], ['qi', ...hiraWithKata('くぃ')], ['qu', ...hiraWithKata('くぅ')], ['qe', ...hiraWithKata('くぇ')], ['qo', ...hiraWithKata('くぉ')], ['ga', ...hiraWithKata('が')], ['gi', ...hiraWithKata('ぎ')], ['gu', ...hiraWithKata('ぐ')], ['ge', ...hiraWithKata('げ')], ['go', ...hiraWithKata('ご')], ['sa', ...hiraWithKata('さ')], ['si', ...hiraWithKata('し')], ['su', ...hiraWithKata('す')], ['se', ...hiraWithKata('せ')], ['so', ...hiraWithKata('そ')], ['za', ...hiraWithKata('ざ')], ['zi', ...hiraWithKata('じ')], ['zu', ...hiraWithKata('ず')], ['ze', ...hiraWithKata('ぜ')], ['zo', ...hiraWithKata('ぞ')], ['ja', ...hiraWithKata('じゃ')], ['ji', ...hiraWithKata('じ')], ['ju', ...hiraWithKata('じゅ')], ['je', ...hiraWithKata('じぇ')], ['jo', ...hiraWithKata('じょ')], ['ta', ...hiraWithKata('た')], ['ti', ...hiraWithKata('ち')], ['tu', ...hiraWithKata('つ')], ['te', ...hiraWithKata('て')], ['to', ...hiraWithKata('と')], ['da', ...hiraWithKata('だ')], ['di', ...hiraWithKata('ぢ')], ['du', ...hiraWithKata('づ')], ['de', ...hiraWithKata('で')], ['do', ...hiraWithKata('ど')], ['na', ...hiraWithKata('な')], ['ni', ...hiraWithKata('に')], ['nu', ...hiraWithKata('ぬ')], ['ne', ...hiraWithKata('ね')], ['no', ...hiraWithKata('の')], ['ha', ...hiraWithKata('は')], ['hi', ...hiraWithKata('ひ')], ['hu', ...hiraWithKata('ふ')], ['he', ...hiraWithKata('へ')], ['ho', ...hiraWithKata('ほ')], ['fa', ...hiraWithKata('ふぁ')], ['fi', ...hiraWithKata('ふぃ')], ['fu', ...hiraWithKata('ふ')], ['fe', ...hiraWithKata('ふぇ')], ['fo', ...hiraWithKata('ふぉ')], ['ba', ...hiraWithKata('ば')], ['bi', ...hiraWithKata('び')], ['bu', ...hiraWithKata('ぶ')], ['be', ...hiraWithKata('べ')], ['bo', ...hiraWithKata('ぼ')], ['pa', ...hiraWithKata('ぱ')], ['pi', ...hiraWithKata('ぴ')], ['pu', ...hiraWithKata('ぷ')], ['pe', ...hiraWithKata('ぺ')], ['po', ...hiraWithKata('ぽ')], ['ma', ...hiraWithKata('ま')], ['mi', ...hiraWithKata('み')], ['mu', ...hiraWithKata('む')], ['me', ...hiraWithKata('め')], ['mo', ...hiraWithKata('も')], ['ya', ...hiraWithKata('や')], ['yu', ...hiraWithKata('ゆ')], ['ye', ...hiraWithKata('いぇ')], ['yo', ...hiraWithKata('よ')], ['ra', ...hiraWithKata('ら')], ['ri', ...hiraWithKata('り')], ['ru', ...hiraWithKata('る')], ['re', ...hiraWithKata('れ')], ['ro', ...hiraWithKata('ろ')], ['wa', ...hiraWithKata('わ')], ['wi', ...hiraWithKata('うぃ')], ['wu', ...hiraWithKata('う')], ['we', ...hiraWithKata('うぇ')], ['wo', ...hiraWithKata('を')], ['nn', ...hiraWithKata('ん')], // // 3 文字 // ['vya', ...hiraWithKata('ゔゃ')], ['vyu', ...hiraWithKata('ゔゅ')], ['vye', ...hiraWithKata('ゔょ')], ['kya', ...hiraWithKata('きゃ')], ['kyi', ...hiraWithKata('きぃ')], ['kyu', ...hiraWithKata('きゅ')], ['kye', ...hiraWithKata('きぇ')], ['kyo', ...hiraWithKata('きょ')], ['gya', ...hiraWithKata('ぎゃ')], ['gyi', ...hiraWithKata('ぎぃ')], ['gyu', ...hiraWithKata('ぎゅ')], ['gye', ...hiraWithKata('ぎぇ')], ['gyo', ...hiraWithKata('ぎょ')], ['qya', ...hiraWithKata('くゃ')], ['qyi', ...hiraWithKata('くぃ')], ['qyu', ...hiraWithKata('くゅ')], ['qye', ...hiraWithKata('くぇ')], ['qyo', ...hiraWithKata('くょ')], ['sya', ...hiraWithKata('しゃ')], ['syi', ...hiraWithKata('しぃ')], ['syu', ...hiraWithKata('しゅ')], ['sye', ...hiraWithKata('しぇ')], ['syo', ...hiraWithKata('しょ')], ['sha', ...hiraWithKata('しゃ')], ['shi', ...hiraWithKata('し')], ['shu', ...hiraWithKata('しゅ')], ['she', ...hiraWithKata('しぇ')], ['sho', ...hiraWithKata('しょ')], ['jya', ...hiraWithKata('じゃ')], ['jyi', ...hiraWithKata('じぃ')], ['jyu', ...hiraWithKata('じゅ')], ['jye', ...hiraWithKata('じぇ')], ['jyo', ...hiraWithKata('じょ')], ['zya', ...hiraWithKata('じゃ')], ['zyi', ...hiraWithKata('じぃ')], ['zyu', ...hiraWithKata('じゅ')], ['zye', ...hiraWithKata('じぇ')], ['zyo', ...hiraWithKata('じょ')], ['tya', ...hiraWithKata('ちゃ')], ['tyi', ...hiraWithKata('ちぃ')], ['tyu', ...hiraWithKata('ちゅ')], ['tye', ...hiraWithKata('ちぇ')], ['tyo', ...hiraWithKata('ちょ')], ['cya', ...hiraWithKata('ちゃ')], ['cyi', ...hiraWithKata('ちぃ')], ['cyu', ...hiraWithKata('ちゅ')], ['cye', ...hiraWithKata('ちぇ')], ['cyo', ...hiraWithKata('ちょ')], ['cha', ...hiraWithKata('ちゃ')], ['chi', ...hiraWithKata('ち')], ['chu', ...hiraWithKata('ちゅ')], ['che', ...hiraWithKata('ちぇ')], ['cho', ...hiraWithKata('ちょ')], ['dya', ...hiraWithKata('ぢゃ')], ['dyi', ...hiraWithKata('ぢぃ')], ['dyu', ...hiraWithKata('ぢゅ')], ['dye', ...hiraWithKata('ぢぇ')], ['dyo', ...hiraWithKata('ぢょ')], ['tsu', ...hiraWithKata('つ')], ['kka', ...hiraWithKata('っか')], ['kki', ...hiraWithKata('っき')], ['kku', ...hiraWithKata('っく')], ['kke', ...hiraWithKata('っけ')], ['kko', ...hiraWithKata('っこ')], ['gga', ...hiraWithKata('っが')], ['ggi', ...hiraWithKata('っぎ')], ['ggu', ...hiraWithKata('っぐ')], ['gge', ...hiraWithKata('っげ')], ['ggo', ...hiraWithKata('っご')], ['ssa', ...hiraWithKata('っさ')], ['ssi', ...hiraWithKata('っし')], ['ssu', ...hiraWithKata('っす')], ['sse', ...hiraWithKata('っせ')], ['sso', ...hiraWithKata('っそ')], ['zza', ...hiraWithKata('っざ')], ['zzi', ...hiraWithKata('っじ')], ['zzu', ...hiraWithKata('っず')], ['zze', ...hiraWithKata('っぜ')], ['zzo', ...hiraWithKata('っぞ')], ['tta', ...hiraWithKata('った')], ['tti', ...hiraWithKata('っち')], ['ttu', ...hiraWithKata('っつ')], ['tte', ...hiraWithKata('って')], ['tto', ...hiraWithKata('っと')], ['dda', ...hiraWithKata('っだ')], ['ddi', ...hiraWithKata('っぢ')], ['ddu', ...hiraWithKata('っづ')], ['dde', ...hiraWithKata('っで')], ['ddo', ...hiraWithKata('っど')], ['hha', ...hiraWithKata('っは')], ['hhi', ...hiraWithKata('っひ')], ['hhu', ...hiraWithKata('っふ')], ['hhe', ...hiraWithKata('っへ')], ['hho', ...hiraWithKata('っほ')], ['bba', ...hiraWithKata('っば')], ['bbi', ...hiraWithKata('っび')], ['bbu', ...hiraWithKata('っぶ')], ['bbe', ...hiraWithKata('っべ')], ['bbo', ...hiraWithKata('っぼ')], ['ppa', ...hiraWithKata('っぱ')], ['ppi', ...hiraWithKata('っぴ')], ['ppu', ...hiraWithKata('っぷ')], ['ppe', ...hiraWithKata('っぺ')], ['ppo', ...hiraWithKata('っぽ')], ['mma', ...hiraWithKata('っま')], ['mmi', ...hiraWithKata('っみ')], ['mmu', ...hiraWithKata('っむ')], ['mme', ...hiraWithKata('っめ')], ['mmo', ...hiraWithKata('っも')], ['yya', ...hiraWithKata('っや')], ['yyu', ...hiraWithKata('っゆ')], ['yyo', ...hiraWithKata('っよ')], ['rra', ...hiraWithKata('っら')], ['rri', ...hiraWithKata('っり')], ['rru', ...hiraWithKata('っる')], ['rre', ...hiraWithKata('っれ')], ['rro', ...hiraWithKata('っろ')], ['wwa', ...hiraWithKata('っわ')], ['wwu', ...hiraWithKata('っう')], ['wwo', ...hiraWithKata('っを')], ['tha', ...hiraWithKata('てゃ')], ['thi', ...hiraWithKata('てぃ')], ['thu', ...hiraWithKata('てゅ')], ['the', ...hiraWithKata('てぇ')], ['tho', ...hiraWithKata('てょ')], ['dha', ...hiraWithKata('でゃ')], ['dhi', ...hiraWithKata('でぃ')], ['dhu', ...hiraWithKata('でゅ')], ['dhe', ...hiraWithKata('でぇ')], ['dho', ...hiraWithKata('でょ')], ['nya', ...hiraWithKata('にゃ')], ['nyi', ...hiraWithKata('にぃ')], ['nyu', ...hiraWithKata('にゅ')], ['nye', ...hiraWithKata('にぇ')], ['nyo', ...hiraWithKata('にょ')], ['bya', ...hiraWithKata('びゃ')], ['byi', ...hiraWithKata('びぃ')], ['byu', ...hiraWithKata('びゅ')], ['bye', ...hiraWithKata('びぇ')], ['byo', ...hiraWithKata('びょ')], ['fya', ...hiraWithKata('ふゃ')], ['fyi', ...hiraWithKata('ふぃ')], ['fyu', ...hiraWithKata('ふゅ')], ['fye', ...hiraWithKata('ふぇ')], ['fyo', ...hiraWithKata('ふょ')], ['hya', ...hiraWithKata('ひゃ')], ['hyi', ...hiraWithKata('ひぃ')], ['hyu', ...hiraWithKata('ひゅ')], ['hye', ...hiraWithKata('ひぇ')], ['hyo', ...hiraWithKata('ひょ')], ['pya', ...hiraWithKata('ぴゃ')], ['pyi', ...hiraWithKata('ぴぃ')], ['pyu', ...hiraWithKata('ぴゅ')], ['pye', ...hiraWithKata('ぴぇ')], ['pyo', ...hiraWithKata('ぴょ')], ['mya', ...hiraWithKata('みゃ')], ['myi', ...hiraWithKata('みぃ')], ['myu', ...hiraWithKata('みゅ')], ['mye', ...hiraWithKata('みぇ')], ['myo', ...hiraWithKata('みょ')], ['rya', ...hiraWithKata('りゃ')], ['ryi', ...hiraWithKata('りぃ')], ['ryu', ...hiraWithKata('りゅ')], ['rye', ...hiraWithKata('りぇ')], ['ryo', ...hiraWithKata('りょ')], ]; exports.indexedRomajiDictionary = exports.romajiDictionary.reduce((acc, item) => { acc[item[0]] = item; return acc; }, {});