jaconv
Version:
Japanese character conversion library
619 lines (618 loc) • 7.69 kB
JavaScript
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