UNPKG

jaconv

Version:

Japanese character conversion library

619 lines (618 loc) 7.69 kB
const g = { あ: "A", い: "I", う: "U", え: "E", お: "O", か: "KA", き: "KI", く: "KU", け: "KE", こ: "KO", さ: "SA", し: "SHI", す: "SU", せ: "SE", そ: "SO", た: "TA", ち: "CHI", つ: "TSU", て: "TE", と: "TO", な: "NA", に: "NI", ぬ: "NU", ね: "NE", の: "NO", は: "HA", ひ: "HI", ふ: "FU", へ: "HE", ほ: "HO", ま: "MA", み: "MI", む: "MU", め: "ME", も: "MO", や: "YA", ゆ: "YU", よ: "YO", ら: "RA", り: "RI", る: "RU", れ: "RE", ろ: "RO", わ: "WA", ゐ: "I", ゑ: "E", を: "O", ぁ: "A", ぃ: "I", ぅ: "U", ぇ: "E", ぉ: "O", が: "GA", ぎ: "GI", ぐ: "GU", げ: "GE", ご: "GO", ざ: "ZA", じ: "JI", ず: "ZU", ぜ: "ZE", ぞ: "ZO", だ: "DA", ぢ: "JI", づ: "ZU", で: "DE", ど: "DO", ば: "BA", び: "BI", ぶ: "BU", べ: "BE", ぼ: "BO", ぱ: "PA", ぴ: "PI", ぷ: "PU", ぺ: "PE", ぽ: "PO", きゃ: "KYA", きゅ: "KYU", きょ: "KYO", しゃ: "SHA", しゅ: "SHU", しょ: "SHO", ちゃ: "CHA", ちゅ: "CHU", ちょ: "CHO", ちぇ: "CHE", にゃ: "NYA", にゅ: "NYU", にょ: "NYO", ひゃ: "HYA", ひゅ: "HYU", ひょ: "HYO", みゃ: "MYA", みゅ: "MYU", みょ: "MYO", りゃ: "RYA", りゅ: "RYU", りょ: "RYO", ぎゃ: "GYA", ぎゅ: "GYU", ぎょ: "GYO", じゃ: "JA", じゅ: "JU", じょ: "JO", びゃ: "BYA", びゅ: "BYU", びょ: "BYO", ぴゃ: "PYA", ぴゅ: "PYU", ぴょ: "PYO" }, M = { AA: !0, EE: !0, II: !1, // I は連続しても省略しない OO: !0, OU: !0, UU: !0 }, h = function(t, o) { let n = null, e = null; return o + 1 < t.length && (e = t.substring(o, o + 2), n = g[e]), !n && o < t.length && (e = t.substring(o, o + 1), n = g[e]), { c: e, h: n || null }; }; function S(t) { let o = "", n = "", e = 0; for (; e < t.length; ) { const r = h(t, e); if (r.c == "っ") { const c = h(t, e + 1); c.h != null && (c.h.indexOf("CH") == 0 ? r.h = "T" : r.h = c.h.substring(0, 1)); } else if (r.c == "ん") { const c = h(t, e + 1); c.h != null && "BMP".indexOf(c.h.charAt(0)) != -1 ? r.h = "M" : r.h = "N"; } else r.c == "ー" && (r.h = ""); if (r.h != null) { if (n != null) { let c = n + r.h; c.length > 2 && (c = c.substring(c.length - 2)), M[c] && (r.h = ""); } o += r.h; } else o += r.c; n = r.h, e += r.c.length; } return o; } const f = 12353, m = 12438, s = 12449, Z = 12534; function d(t) { let o = ""; for (let n = 0; n < t.length; n += 1) { const e = t.charCodeAt(n); o += f <= e && e <= m ? String.fromCharCode(e - f + s) : t.charAt(n); } return o; } function B(t) { let o = ""; for (let n = 0; n < t.length; n += 1) { const e = t.charCodeAt(n); o += s <= e && e <= Z ? String.fromCharCode(e - s + f) : t.charAt(n); } return o; } const N = [ " ", " ", "!", "!", // 2重引用符 //'\"', '"', '"', "”", // 一対多の変換の逆変換は先優先 '"', "“", "#", "#", "$", "$", "%", "%", "&", "&", "'", "’", "(", "(", ")", ")", "*", "*", "+", "+", ",", ",", "-", "-", ".", ".", "/", "/", "0", "0", "1", "1", "2", "2", "3", "3", "4", "4", "5", "5", "6", "6", "7", "7", "8", "8", "9", "9", ":", ":", ";", ";", "<", "<", "=", "=", ">", ">", "?", "?", "@", "@", "A", "A", "B", "B", "C", "C", "D", "D", "E", "E", "F", "F", "G", "G", "H", "H", "I", "I", "J", "J", "K", "K", "L", "L", "M", "M", "N", "N", "O", "O", "P", "P", "Q", "Q", "R", "R", "S", "S", "T", "T", "U", "U", "V", "V", "W", "W", "X", "X", "Y", "Y", "Z", "Z", "[", "[", // 円記号 //'\\', '\', "\\", "¥", "]", "]", "^", "^", "_", "_", "`", "‘", "a", "a", "b", "b", "c", "c", "d", "d", "e", "e", "f", "f", "g", "g", "h", "h", "i", "i", "j", "j", "k", "k", "l", "l", "m", "m", "n", "n", "o", "o", "p", "p", "q", "q", "r", "r", "s", "s", "t", "t", "u", "u", "v", "v", "w", "w", "x", "x", "y", "y", "z", "z", "{", "{", "|", "|", "}", "}", "~", "~" ], P = [ "。", "。", "「", "「", "」", "」", "、", "、", "・", "・", "ヲ", "ヲ", "ァ", "ァ", "ィ", "ィ", "ゥ", "ゥ", "ェ", "ェ", "ォ", "ォ", "ャ", "ャ", "ュ", "ュ", "ョ", "ョ", "ッ", "ッ", "ー", "ー", "ア", "ア", "イ", "イ", "ウ", "ウ", "エ", "エ", "オ", "オ", "カ", "カ", "キ", "キ", "ク", "ク", "ケ", "ケ", "コ", "コ", "ガ", "ガ", "ギ", "ギ", "グ", "グ", "ゲ", "ゲ", "ゴ", "ゴ", "サ", "サ", "シ", "シ", "ス", "ス", "セ", "セ", "ソ", "ソ", "ザ", "ザ", "ジ", "ジ", "ズ", "ズ", "ゼ", "ゼ", "ゾ", "ゾ", "タ", "タ", "チ", "チ", "ツ", "ツ", "テ", "テ", "ト", "ト", "ダ", "ダ", "ヂ", "ヂ", "ヅ", "ヅ", "デ", "デ", "ド", "ド", "ナ", "ナ", "ニ", "ニ", "ヌ", "ヌ", "ネ", "ネ", "ノ", "ノ", "ハ", "ハ", "ヒ", "ヒ", "フ", "フ", "ヘ", "ヘ", "ホ", "ホ", "バ", "バ", "ビ", "ビ", "ブ", "ブ", "ベ", "ベ", "ボ", "ボ", "パ", "パ", "ピ", "ピ", "プ", "プ", "ペ", "ペ", "ポ", "ポ", "マ", "マ", "ミ", "ミ", "ム", "ム", "メ", "メ", "モ", "モ", "ヤ", "ヤ", "ユ", "ユ", "ヨ", "ヨ", "ラ", "ラ", "リ", "リ", "ル", "ル", "レ", "レ", "ロ", "ロ", "ワ", "ワ", "ン", "ン", "ヴ", "ヴ", "゛", "゙", "゜", "゚", "ヰ", "イ", "ヱ", "エ", "ヮ", "ワ", "ヵ", "カ", "ヶ", "ケ" ], E = function(t) { const o = {}, n = {}, e = function(a, l) { o[a] || (o[a] = l), n[l] || (n[l] = a); }, r = function(a, l) { const O = l ? n : o; let u = ""; for (let i = 0; i < a.length; i += 1) { if (i + 1 < a.length) { const Y = O[a.substring(i, i + 2)]; if (Y) { u += Y, i += 1; continue; } } const U = O[a.substring(i, i + 1)]; if (U) { u += U; continue; } u += a.substring(i, i + 1); } return u; }; if (t.length % 2 != 0) throw "bad data length:" + t.length; const c = t.length / 2; for (let a = 0; a < c; a += 1) e(t[a * 2], t[a * 2 + 1]); return { convert: r }; }, C = E(N), I = E(P); function A(t) { return C.convert(t, !0); } function K(t) { return C.convert(t, !1); } function b(t) { return I.convert(t, !1); } function H(t) { return I.convert(t, !0); } function p(t) { return A(b(t)); } function v(t) { return K(H(t)); } function G(t) { return A(H(t)); } const R = { toHebon: S, toHiragana: B, toKatakana: d, normalize: G, toHan: p, toHanAscii: A, toHanKana: b, toZen: v, toZenAscii: K, toZenKana: H }; export { R as default }; //# sourceMappingURL=jaconv.mjs.map