jaconv
Version:
Japanese character conversion library
3 lines (2 loc) • 5.11 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,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 s=12353,m=12438,f=12449,Z=12534;function B(t){let o="";for(let n=0;n<t.length;n+=1){const e=t.charCodeAt(n);o+=s<=e&&e<=m?String.fromCharCode(e-s+f):t.charAt(n)}return o}function N(t){let o="";for(let n=0;n<t.length;n+=1){const e=t.charCodeAt(n);o+=f<=e&&e<=Z?String.fromCharCode(e-f+s):t.charAt(n)}return o}const P=[" "," ","!","!",'"',"”",'"',"“","#","#","$","$","%","%","&","&","'","’","(","(",")",")","*","*","+","+",",",",","-","-",".",".","/","/","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","{","{","|","|","}","}","~","~"],d=["。","。","「","「","」","」","、","、","・","・","ヲ","ヲ","ァ","ァ","ィ","ィ","ゥ","ゥ","ェ","ェ","ォ","ォ","ャ","ャ","ュ","ュ","ョ","ョ","ッ","ッ","ー","ー","ア","ア","イ","イ","ウ","ウ","エ","エ","オ","オ","カ","カ","キ","キ","ク","ク","ケ","ケ","コ","コ","ガ","ガ","ギ","ギ","グ","グ","ゲ","ゲ","ゴ","ゴ","サ","サ","シ","シ","ス","ス","セ","セ","ソ","ソ","ザ","ザ","ジ","ジ","ズ","ズ","ゼ","ゼ","ゾ","ゾ","タ","タ","チ","チ","ツ","ツ","テ","テ","ト","ト","ダ","ダ","ヂ","ヂ","ヅ","ヅ","デ","デ","ド","ド","ナ","ナ","ニ","ニ","ヌ","ヌ","ネ","ネ","ノ","ノ","ハ","ハ","ヒ","ヒ","フ","フ","ヘ","ヘ","ホ","ホ","バ","バ","ビ","ビ","ブ","ブ","ベ","ベ","ボ","ボ","パ","パ","ピ","ピ","プ","プ","ペ","ペ","ポ","ポ","マ","マ","ミ","ミ","ム","ム","メ","メ","モ","モ","ヤ","ヤ","ユ","ユ","ヨ","ヨ","ラ","ラ","リ","リ","ル","ル","レ","レ","ロ","ロ","ワ","ワ","ン","ン","ヴ","ヴ","゛","゙","゜","゚","ヰ","イ","ヱ","エ","ヮ","ワ","ヵ","カ","ヶ","ケ"],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(P),I=E(d);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:N,toKatakana:B,normalize:G,toHan:p,toHanAscii:A,toHanKana:b,toZen:v,toZenAscii:K,toZenKana:H};module.exports=R;
//# sourceMappingURL=jaconv.js.map