UNPKG

kuroshiro-enhance

Version:

kuroshiro is a Japanese language library for converting Japanese sentence to Hiragana, Katakana or Romaji with furigana and okurigana modes supported.

12 lines (8 loc) 23.6 kB
(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Kuroshiro = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _util=require("./util");class Kuroshiro{constructor(){this._analyzer=null}async init(a){if(!a||"object"!=typeof a||"function"!=typeof a.init||"function"!=typeof a.parse)throw new Error("Invalid initialization parameter.");if(null!=this._analyzer)throw new Error("Kuroshiro has already been initialized.");await a.init(),this._analyzer=a}async convert(a,r){if((r=r||{}).to=r.to||"hiragana",r.mode=r.mode||"normal",r.includeKatakana=r.includeKatakana||!1,r.romajiSystem=r.romajiSystem||_util.ROMANIZATION_SYSTEM.HEPBURN,r.delimiter_start=r.delimiter_start||"(",r.delimiter_end=r.delimiter_end||")",a=a||"",-1===["hiragana","katakana","romaji"].indexOf(r.to))throw new Error("Invalid Target Syllabary.");if(-1===["normal","spaced","okurigana","furigana"].indexOf(r.mode))throw new Error("Invalid Conversion Mode.");if(-1===Object.keys(_util.ROMANIZATION_SYSTEM).map(a=>_util.ROMANIZATION_SYSTEM[a]).indexOf(r.romajiSystem))throw new Error("Invalid Romanization System.");const e=await this._analyzer.parse(a),t=(0,_util.patchTokens)(e);if("normal"===r.mode||"spaced"===r.mode)switch(r.to){case"katakana":return"normal"===r.mode?t.map(a=>a.reading).join(""):t.map(a=>a.reading).join(" ");case"romaji":const a=a=>{let e;return e=(0,_util.hasJapanese)(a.surface_form)?a.pronunciation||a.reading:a.surface_form,(0,_util.toRawRomaji)(e,r.romajiSystem)};return"normal"===r.mode?t.map(a).join(""):t.map(a).join(" ");case"hiragana":for(let a=0;a<t.length;a++)if((0,_util.hasKanji)(t[a].surface_form))if((0,_util.hasKatakana)(t[a].surface_form)){t[a].reading=(0,_util.toRawHiragana)(t[a].reading);let r="",e="";for(let r=0;r<t[a].surface_form.length;r++)(0,_util.isKanji)(t[a].surface_form[r])?e+="(.*)":e+=(0,_util.isKatakana)(t[a].surface_form[r])?(0,_util.toRawHiragana)(t[a].surface_form[r]):t[a].surface_form[r];const i=new RegExp(e).exec(t[a].reading);if(i){let e=0;for(let n=0;n<t[a].surface_form.length;n++)(0,_util.isKanji)(t[a].surface_form[n])?(r+=i[e+1],e++):r+=t[a].surface_form[n];t[a].reading=r}}else t[a].reading=(0,_util.toRawHiragana)(t[a].reading);else t[a].reading=t[a].surface_form;return"normal"===r.mode?t.map(a=>a.reading).join(""):t.map(a=>a.reading).join(" ");default:throw new Error("Unknown option.to param")}else if("okurigana"===r.mode||"furigana"===r.mode){const a=[];for(let r=0;r<t.length;r++){switch((0,_util.getStrType)(t[r].surface_form)){case 0:a.push([t[r].surface_form,1,(0,_util.toRawHiragana)(t[r].reading),t[r].pronunciation||t[r].reading]);break;case 1:let e="",i=!1;const n=[];for(let a=0;a<t[r].surface_form.length;a++)(0,_util.isKanji)(t[r].surface_form[a])?i?n[n.length-1]+=t[r].surface_form[a]:(i=!0,e+="(.+)",n.push(t[r].surface_form[a])):(i=!1,n.push(t[r].surface_form[a]),e+=(0,_util.isKatakana)(t[r].surface_form[a])?(0,_util.toRawHiragana)(t[r].surface_form[a]):t[r].surface_form[a]);const o=new RegExp(`^${e}$`).exec((0,_util.toRawHiragana)(t[r].reading));if(o){let r=1;for(let e=0;e<n.length;e++)(0,_util.isKanji)(n[e][0])?(a.push([n[e],1,o[r],(0,_util.toRawKatakana)(o[r])]),r+=1):a.push([n[e],2,(0,_util.toRawHiragana)(n[e]),(0,_util.toRawKatakana)(n[e])])}else a.push([t[r].surface_form,1,(0,_util.toRawHiragana)(t[r].reading),t[r].pronunciation||t[r].reading]);break;case 2:for(let e=0;e<t[r].surface_form.length;e++)a.push([t[r].surface_form[e],2,(0,_util.toRawHiragana)(t[r].reading[e]),t[r].pronunciation&&t[r].pronunciation[e]||t[r].reading[e]]);break;case 3:for(let e=0;e<t[r].surface_form.length;e++)a.push([t[r].surface_form[e],3,t[r].surface_form[e],t[r].surface_form[e]]);break;default:throw new Error("Unknown strType")}}let e="";switch(r.to){case"katakana":if("okurigana"===r.mode)for(let t=0;t<a.length;t++)1!==a[t][1]?e+=a[t][0]:e+=a[t][0]+r.delimiter_start+(0,_util.toRawKatakana)(a[t][2])+r.delimiter_end;else for(let t=0;t<a.length;t++)1!==a[t][1]?e+=a[t][0]:e+=`<ruby>${a[t][0]}<rp>${r.delimiter_start}</rp><rt>${(0,_util.toRawKatakana)(a[t][2])}</rt><rp>${r.delimiter_end}</rp></ruby>`;return e;case"romaji":if("okurigana"===r.mode)for(let t=0;t<a.length;t++)1!==a[t][1]?e+=a[t][0]:e+=a[t][0]+r.delimiter_start+(0,_util.toRawRomaji)(a[t][3],r.romajiSystem)+r.delimiter_end;else{e+="<ruby>";for(let t=0;t<a.length;t++)e+=`${a[t][0]}<rp>${r.delimiter_start}</rp><rt>${(0,_util.toRawRomaji)(a[t][3],r.romajiSystem)}</rt><rp>${r.delimiter_end}</rp>`;e+="</ruby>"}return e;case"hiragana":if("okurigana"===r.mode)for(let t=0;t<a.length;t++)1!==a[t][1]?e+=a[t][0]:e+=a[t][0]+r.delimiter_start+a[t][2]+r.delimiter_end;else for(let t=0;t<a.length;t++){const i=a[t][0]!==a[t][2],n=r.includeKatakana&&i,o=1===a[t][1];e+=n||o?`<ruby>${a[t][0]}<rp>${r.delimiter_start}</rp><rt>${a[t][2]}</rt><rp>${r.delimiter_end}</rp></ruby>`:a[t][0]}return e;default:throw new Error("Invalid Target Syllabary.")}}}}const Util={isHiragana:_util.isHiragana,isKatakana:_util.isKatakana,isKana:_util.isKana,isKanji:_util.isKanji,isJapanese:_util.isJapanese,hasHiragana:_util.hasHiragana,hasKatakana:_util.hasKatakana,hasKana:_util.hasKana,hasKanji:_util.hasKanji,hasJapanese:_util.hasJapanese,kanaToHiragna:_util.kanaToHiragna,kanaToKatakana:_util.kanaToKatakana,kanaToRomaji:_util.kanaToRomaji};Kuroshiro.Util=Util;var _default=exports.default=Kuroshiro; },{"./util":3}],2:[function(require,module,exports){ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _core=_interopRequireDefault(require("./core"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var _default=exports.default=_core.default; },{"./core":1}],3:[function(require,module,exports){ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.toRawRomaji=exports.toRawKatakana=exports.toRawHiragana=exports.patchTokens=exports.kanaToRomaji=exports.kanaToKatakana=exports.kanaToHiragna=exports.isKatakana=exports.isKanji=exports.isKana=exports.isJapanese=exports.isHiragana=exports.hasKatakana=exports.hasKanji=exports.hasKana=exports.hasJapanese=exports.hasHiragana=exports.getStrType=exports.ROMANIZATION_SYSTEM=void 0;const KATAKANA_HIRAGANA_SHIFT="ぁ".charCodeAt(0)-"ァ".charCodeAt(0),HIRAGANA_KATAKANA_SHIFT="ァ".charCodeAt(0)-"ぁ".charCodeAt(0),ROMANIZATION_SYSTEM=exports.ROMANIZATION_SYSTEM={NIPPON:"nippon",PASSPORT:"passport",HEPBURN:"hepburn"},isHiragana=function(a){return(a=a[0])>="぀"&&a<="ゟ"};exports.isHiragana=isHiragana;const isKatakana=function(a){return(a=a[0])>="゠"&&a<="ヿ"};exports.isKatakana=isKatakana;const isKana=function(a){return isHiragana(a)||isKatakana(a)};exports.isKana=isKana;const isKanji=function(a){return(a=a[0])>="一"&&a<="鿏"||a>="豈"&&a<="﫿"||a>="㐀"&&a<="䶿"};exports.isKanji=isKanji;const isJapanese=function(a){return isKana(a)||isKanji(a)};exports.isJapanese=isJapanese;const hasHiragana=function(a){for(let o=0;o<a.length;o++)if(isHiragana(a[o]))return!0;return!1};exports.hasHiragana=hasHiragana;const hasKatakana=function(a){for(let o=0;o<a.length;o++)if(isKatakana(a[o]))return!0;return!1};exports.hasKatakana=hasKatakana;const hasKana=function(a){for(let o=0;o<a.length;o++)if(isKana(a[o]))return!0;return!1};exports.hasKana=hasKana;const hasKanji=function(a){for(let o=0;o<a.length;o++)if(isKanji(a[o]))return!0;return!1};exports.hasKanji=hasKanji;const hasJapanese=function(a){for(let o=0;o<a.length;o++)if(isJapanese(a[o]))return!0;return!1};exports.hasJapanese=hasJapanese;const toRawHiragana=function(a){return[...a].map(a=>a>"゠"&&a<"ヷ"?String.fromCharCode(a.charCodeAt(0)+KATAKANA_HIRAGANA_SHIFT):a).join("")};exports.toRawHiragana=toRawHiragana;const toRawKatakana=function(a){return[...a].map(a=>a>"぀"&&a<"゗"?String.fromCharCode(a.charCodeAt(0)+HIRAGANA_KATAKANA_SHIFT):a).join("")};exports.toRawKatakana=toRawKatakana;const toRawRomaji=function(a,o){const e={nippon:{"1":"1","2":"2","3":"3","4":"4","5":"5","6":"6","7":"7","8":"8","9":"9","0":"0","!":"!","“":'"',"”":'"',"#":"#","$":"$","%":"%","&":"&","’":"'","(":"(",")":")","=":"=","~":"~","|":"|","@":"@","‘":"`","+":"+","*":"*",";":";",":":":","<":"<",">":">","、":",","。":".","/":"/","?":"?","_":"_","・":"・","「":'"',"」":'"',"{":"{","}":"}","¥":"\\","^":"^","あ":"a","い":"i","う":"u","え":"e","お":"o","ア":"a","イ":"i","ウ":"u","エ":"e","オ":"o","か":"ka","き":"ki","く":"ku","け":"ke","こ":"ko","カ":"ka","キ":"ki","ク":"ku","ケ":"ke","コ":"ko","さ":"sa","し":"si","す":"su","せ":"se","そ":"so","サ":"sa","シ":"si","ス":"su","セ":"se","ソ":"so","た":"ta","ち":"ti","つ":"tu","て":"te","と":"to","タ":"ta","チ":"ti","ツ":"tu","テ":"te","ト":"to","な":"na","に":"ni","ぬ":"nu","ね":"ne","の":"no","ナ":"na","ニ":"ni","ヌ":"nu","ネ":"ne","ノ":"no","は":"ha","ひ":"hi","ふ":"hu","へ":"he","ほ":"ho","ハ":"ha","ヒ":"hi","フ":"hu","ヘ":"he","ホ":"ho","ま":"ma","み":"mi","む":"mu","め":"me","も":"mo","マ":"ma","ミ":"mi","ム":"mu","メ":"me","モ":"mo","や":"ya","ゆ":"yu","よ":"yo","ヤ":"ya","ユ":"yu","ヨ":"yo","ら":"ra","り":"ri","る":"ru","れ":"re","ろ":"ro","ラ":"ra","リ":"ri","ル":"ru","レ":"re","ロ":"ro","わ":"wa","ゐ":"wi","ゑ":"we","を":"wo","ワ":"wa","ヰ":"wi","ヱ":"we","ヲ":"wo","が":"ga","ぎ":"gi","ぐ":"gu","げ":"ge","ご":"go","ガ":"ga","ギ":"gi","グ":"gu","ゲ":"ge","ゴ":"go","ざ":"za","じ":"zi","ず":"zu","ぜ":"ze","ぞ":"zo","ザ":"za","ジ":"zi","ズ":"zu","ゼ":"ze","ゾ":"zo","だ":"da","ぢ":"di","づ":"du","で":"de","ど":"do","ダ":"da","ヂ":"di","ヅ":"du","デ":"de","ド":"do","ば":"ba","び":"bi","ぶ":"bu","べ":"be","ぼ":"bo","バ":"ba","ビ":"bi","ブ":"bu","ベ":"be","ボ":"bo","ぱ":"pa","ぴ":"pi","ぷ":"pu","ぺ":"pe","ぽ":"po","パ":"pa","ピ":"pi","プ":"pu","ペ":"pe","ポ":"po","きゃ":"kya","きゅ":"kyu","きょ":"kyo","しゃ":"sya","しゅ":"syu","しょ":"syo","ちゃ":"tya","ちゅ":"tyu","ちょ":"tyo","にゃ":"nya","にゅ":"nyu","にょ":"nyo","ひゃ":"hya","ひゅ":"hyu","ひょ":"hyo","みゃ":"mya","みゅ":"myu","みょ":"myo","りゃ":"rya","りゅ":"ryu","りょ":"ryo","キャ":"kya","キュ":"kyu","キョ":"kyo","シャ":"sya","シュ":"syu","ショ":"syo","チャ":"tya","チュ":"tyu","チョ":"tyo","ニャ":"nya","ニュ":"nyu","ニョ":"nyo","ヒャ":"hya","ヒュ":"hyu","ヒョ":"hyo","ミャ":"mya","ミュ":"myu","ミョ":"myo","リャ":"rya","リュ":"ryu","リョ":"ryo","ぎゃ":"gya","ぎゅ":"gyu","ぎょ":"gyo","じゃ":"zya","じゅ":"zyu","じょ":"zyo","ぢゃ":"dya","ぢゅ":"dyu","ぢょ":"dyo","びゃ":"bya","びゅ":"byu","びょ":"byo","ぴゃ":"pya","ぴゅ":"pyu","ぴょ":"pyo","くゎ":"kwa","ぐゎ":"gwa","ギャ":"gya","ギュ":"gyu","ギョ":"gyo","ジャ":"zya","ジュ":"zyu","ジョ":"zyo","ヂャ":"dya","ヂュ":"dyu","ヂョ":"dyo","ビャ":"bya","ビュ":"byu","ビョ":"byo","ピャ":"pya","ピュ":"pyu","ピョ":"pyo","クヮ":"kwa","グヮ":"gwa","ぁ":"a","ぃ":"i","ぅ":"u","ぇ":"e","ぉ":"o","ゃ":"ya","ゅ":"yu","ょ":"yo","ゎ":"wa","ァ":"a","ィ":"i","ゥ":"u","ェ":"e","ォ":"o","ャ":"ya","ュ":"yu","ョ":"yo","ヮ":"wa","ヵ":"ka","ヶ":"ke","ん":"n","ン":"n"," ":" ","いぇ":"ye","きぇ":"kye","くぃ":"kwi","くぇ":"kwe","くぉ":"kwo","ぐぃ":"gwi","ぐぇ":"gwe","ぐぉ":"gwo","イェ":"ye","キェ":"kya","クィ":"kwi","クェ":"kwe","クォ":"kwo","グィ":"gwi","グェ":"gwe","グォ":"gwo","しぇ":"sye","じぇ":"zye","すぃ":"swi","ずぃ":"zwi","ちぇ":"tye","つぁ":"twa","つぃ":"twi","つぇ":"twe","つぉ":"two","にぇ":"nye","ひぇ":"hye","ふぁ":"hwa","ふぃ":"hwi","ふぇ":"hwe","ふぉ":"hwo","ふゅ":"hwyu","ふょ":"hwyo","シェ":"sye","ジェ":"zye","スィ":"swi","ズィ":"zwi","チェ":"tye","ツァ":"twa","ツィ":"twi","ツェ":"twe","ツォ":"two","ニェ":"nye","ヒェ":"hye","ファ":"hwa","フィ":"hwi","フェ":"hwe","フォ":"hwo","フュ":"hwyu","フョ":"hwyo"},passport:{"1":"1","2":"2","3":"3","4":"4","5":"5","6":"6","7":"7","8":"8","9":"9","0":"0","!":"!","“":'"',"”":'"',"#":"#","$":"$","%":"%","&":"&","’":"'","(":"(",")":")","=":"=","~":"~","|":"|","@":"@","‘":"`","+":"+","*":"*",";":";",":":":","<":"<",">":">","、":",","。":".","/":"/","?":"?","_":"_","・":"・","「":'"',"」":'"',"{":"{","}":"}","¥":"\\","^":"^","あ":"a","い":"i","う":"u","え":"e","お":"o","ア":"a","イ":"i","ウ":"u","エ":"e","オ":"o","か":"ka","き":"ki","く":"ku","け":"ke","こ":"ko","カ":"ka","キ":"ki","ク":"ku","ケ":"ke","コ":"ko","さ":"sa","し":"shi","す":"su","せ":"se","そ":"so","サ":"sa","シ":"shi","ス":"su","セ":"se","ソ":"so","た":"ta","ち":"chi","つ":"tsu","て":"te","と":"to","タ":"ta","チ":"chi","ツ":"tsu","テ":"te","ト":"to","な":"na","に":"ni","ぬ":"nu","ね":"ne","の":"no","ナ":"na","ニ":"ni","ヌ":"nu","ネ":"ne","ノ":"no","は":"ha","ひ":"hi","ふ":"fu","へ":"he","ほ":"ho","ハ":"ha","ヒ":"hi","フ":"fu","ヘ":"he","ホ":"ho","ま":"ma","み":"mi","む":"mu","め":"me","も":"mo","マ":"ma","ミ":"mi","ム":"mu","メ":"me","モ":"mo","や":"ya","ゆ":"yu","よ":"yo","ヤ":"ya","ユ":"yu","ヨ":"yo","ら":"ra","り":"ri","る":"ru","れ":"re","ろ":"ro","ラ":"ra","リ":"ri","ル":"ru","レ":"re","ロ":"ro","わ":"wa","ゐ":"i","ゑ":"e","を":"o","ワ":"wa","ヰ":"i","ヱ":"e","ヲ":"o","が":"ga","ぎ":"gi","ぐ":"gu","げ":"ge","ご":"go","ガ":"ga","ギ":"gi","グ":"gu","ゲ":"ge","ゴ":"go","ざ":"za","じ":"ji","ず":"zu","ぜ":"ze","ぞ":"zo","ザ":"za","ジ":"ji","ズ":"zu","ゼ":"ze","ゾ":"zo","だ":"da","ぢ":"ji","づ":"zu","で":"de","ど":"do","ダ":"da","ヂ":"ji","ヅ":"zu","デ":"de","ド":"do","ば":"ba","び":"bi","ぶ":"bu","べ":"be","ぼ":"bo","バ":"ba","ビ":"bi","ブ":"bu","ベ":"be","ボ":"bo","ぱ":"pa","ぴ":"pi","ぷ":"pu","ぺ":"pe","ぽ":"po","パ":"pa","ピ":"pi","プ":"pu","ペ":"pe","ポ":"po","きゃ":"kya","きゅ":"kyu","きょ":"kyo","しゃ":"sha","しゅ":"shu","しょ":"sho","ちゃ":"cha","ちゅ":"chu","ちょ":"cho","にゃ":"nya","にゅ":"nyu","にょ":"nyo","ひゃ":"hya","ひゅ":"hyu","ひょ":"hyo","みゃ":"mya","みゅ":"myu","みょ":"myo","りゃ":"rya","りゅ":"ryu","りょ":"ryo","キャ":"kya","キュ":"kyu","キョ":"kyo","シャ":"sha","シュ":"shu","ショ":"sho","チャ":"cha","チュ":"chu","チョ":"cho","ニャ":"nya","ニュ":"nyu","ニョ":"nyo","ヒャ":"hya","ヒュ":"hyu","ヒョ":"hyo","ミャ":"mya","ミュ":"myu","ミョ":"myo","リャ":"rya","リュ":"ryu","リョ":"ryo","ぎゃ":"gya","ぎゅ":"gyu","ぎょ":"gyo","じゃ":"ja","じゅ":"ju","じょ":"jo","ぢゃ":"ja","ぢゅ":"ju","ぢょ":"jo","びゃ":"bya","びゅ":"byu","びょ":"byo","ぴゃ":"pya","ぴゅ":"pyu","ぴょ":"pyo","ギャ":"gya","ギュ":"gyu","ギョ":"gyo","ジャ":"ja","ジュ":"ju","ジョ":"jo","ヂャ":"ja","ヂュ":"ju","ヂョ":"jo","ビャ":"bya","ビュ":"byu","ビョ":"byo","ピャ":"pya","ピュ":"pyu","ピョ":"pyo","ぁ":"a","ぃ":"i","ぅ":"u","ぇ":"e","ぉ":"o","ゃ":"ya","ゅ":"yu","ょ":"yo","ゎ":"wa","ァ":"a","ィ":"i","ゥ":"u","ェ":"e","ォ":"o","ャ":"ya","ュ":"yu","ョ":"yo","ヮ":"wa","ヵ":"ka","ヶ":"ke","ん":"n","ン":"n"," ":" ","ヴ":"b"},hepburn:{"1":"1","2":"2","3":"3","4":"4","5":"5","6":"6","7":"7","8":"8","9":"9","0":"0","!":"!","“":'"',"”":'"',"#":"#","$":"$","%":"%","&":"&","’":"'","(":"(",")":")","=":"=","~":"~","|":"|","@":"@","‘":"`","+":"+","*":"*",";":";",":":":","<":"<",">":">","、":",","。":".","/":"/","?":"?","_":"_","・":"・","「":'"',"」":'"',"{":"{","}":"}","¥":"\\","^":"^","あ":"a","い":"i","う":"u","え":"e","お":"o","ア":"a","イ":"i","ウ":"u","エ":"e","オ":"o","か":"ka","き":"ki","く":"ku","け":"ke","こ":"ko","カ":"ka","キ":"ki","ク":"ku","ケ":"ke","コ":"ko","さ":"sa","し":"shi","す":"su","せ":"se","そ":"so","サ":"sa","シ":"shi","ス":"su","セ":"se","ソ":"so","た":"ta","ち":"chi","つ":"tsu","て":"te","と":"to","タ":"ta","チ":"chi","ツ":"tsu","テ":"te","ト":"to","な":"na","に":"ni","ぬ":"nu","ね":"ne","の":"no","ナ":"na","ニ":"ni","ヌ":"nu","ネ":"ne","ノ":"no","は":"ha","ひ":"hi","ふ":"fu","へ":"he","ほ":"ho","ハ":"ha","ヒ":"hi","フ":"fu","ヘ":"he","ホ":"ho","ま":"ma","み":"mi","む":"mu","め":"me","も":"mo","マ":"ma","ミ":"mi","ム":"mu","メ":"me","モ":"mo","や":"ya","ゆ":"yu","よ":"yo","ヤ":"ya","ユ":"yu","ヨ":"yo","ら":"ra","り":"ri","る":"ru","れ":"re","ろ":"ro","ラ":"ra","リ":"ri","ル":"ru","レ":"re","ロ":"ro","わ":"wa","ゐ":"i","ゑ":"e","を":"o","ワ":"wa","ヰ":"i","ヱ":"e","ヲ":"o","が":"ga","ぎ":"gi","ぐ":"gu","げ":"ge","ご":"go","ガ":"ga","ギ":"gi","グ":"gu","ゲ":"ge","ゴ":"go","ざ":"za","じ":"ji","ず":"zu","ぜ":"ze","ぞ":"zo","ザ":"za","ジ":"ji","ズ":"zu","ゼ":"ze","ゾ":"zo","だ":"da","ぢ":"ji","づ":"zu","で":"de","ど":"do","ダ":"da","ヂ":"ji","ヅ":"zu","デ":"de","ド":"do","ば":"ba","び":"bi","ぶ":"bu","べ":"be","ぼ":"bo","バ":"ba","ビ":"bi","ブ":"bu","ベ":"be","ボ":"bo","ぱ":"pa","ぴ":"pi","ぷ":"pu","ぺ":"pe","ぽ":"po","パ":"pa","ピ":"pi","プ":"pu","ペ":"pe","ポ":"po","きゃ":"kya","きゅ":"kyu","きょ":"kyo","しゃ":"sha","しゅ":"shu","しょ":"sho","ちゃ":"cha","ちゅ":"chu","ちょ":"cho","にゃ":"nya","にゅ":"nyu","にょ":"nyo","ひゃ":"hya","ひゅ":"hyu","ひょ":"hyo","みゃ":"mya","みゅ":"myu","みょ":"myo","りゃ":"rya","りゅ":"ryu","りょ":"ryo","キャ":"kya","キュ":"kyu","キョ":"kyo","シャ":"sha","シュ":"shu","ショ":"sho","チャ":"cha","チュ":"chu","チョ":"cho","ニャ":"nya","ニュ":"nyu","ニョ":"nyo","ヒャ":"hya","ヒュ":"hyu","ヒョ":"hyo","ミャ":"mya","ミュ":"myu","ミョ":"myo","リャ":"rya","リュ":"ryu","リョ":"ryo","ぎゃ":"gya","ぎゅ":"gyu","ぎょ":"gyo","じゃ":"ja","じゅ":"ju","じょ":"jo","ぢゃ":"ja","ぢゅ":"ju","ぢょ":"jo","びゃ":"bya","びゅ":"byu","びょ":"byo","ぴゃ":"pya","ぴゅ":"pyu","ぴょ":"pyo","ギャ":"gya","ギュ":"gyu","ギョ":"gyo","ジャ":"ja","ジュ":"ju","ジョ":"jo","ヂャ":"ja","ヂュ":"ju","ヂョ":"jo","ビャ":"bya","ビュ":"byu","ビョ":"byo","ピャ":"pya","ピュ":"pyu","ピョ":"pyo","ぁ":"a","ぃ":"i","ぅ":"u","ぇ":"e","ぉ":"o","ゃ":"ya","ゅ":"yu","ょ":"yo","ゎ":"wa","ァ":"a","ィ":"i","ゥ":"u","ェ":"e","ォ":"o","ャ":"ya","ュ":"yu","ョ":"yo","ヮ":"wa","ヵ":"ka","ヶ":"ke","ん":"n","ン":"n"," ":" ","いぇ":"ye","うぃ":"wi","うぇ":"we","うぉ":"wo","きぇ":"kye","くぁ":"kwa","くぃ":"kwi","くぇ":"kwe","くぉ":"kwo","ぐぁ":"gwa","ぐぃ":"gwi","ぐぇ":"gwe","ぐぉ":"gwo","イェ":"ye","ウィ":"wi","ウェ":"we","ウォ":"wo","ヴ":"vu","ヴァ":"va","ヴィ":"vi","ヴェ":"ve","ヴォ":"vo","ヴュ":"vyu","ヴョ":"vyo","キェ":"kya","クァ":"kwa","クィ":"kwi","クェ":"kwe","クォ":"kwo","グァ":"gwa","グィ":"gwi","グェ":"gwe","グォ":"gwo","しぇ":"she","じぇ":"je","ちぇ":"che","つぁ":"tsa","つぃ":"tsi","つぇ":"tse","つぉ":"tso","てぃ":"ti","てゅ":"tyu","でぃ":"di","でゅ":"dyu","とぅ":"tu","どぅ":"du","にぇ":"nye","ひぇ":"hye","ふぁ":"fa","ふぃ":"fi","ふぇ":"fe","ふぉ":"fo","ふゅ":"fyu","ふょ":"fyo","シェ":"she","ジェ":"je","チェ":"che","ツァ":"tsa","ツィ":"tsi","ツェ":"tse","ツォ":"tso","ティ":"ti","テュ":"tyu","ディ":"di","デュ":"dyu","トゥ":"tu","ドゥ":"du","ニェ":"nye","ヒェ":"hye","ファ":"fa","フィ":"fi","フェ":"fe","フォ":"fo","フュ":"fyu","フョ":"fyo"}};let n,t,i=0,r="";if((o=o||ROMANIZATION_SYSTEM.HEPBURN)===ROMANIZATION_SYSTEM.PASSPORT&&(a=a.replace(/ー/gm,"")),o===ROMANIZATION_SYSTEM.NIPPON||o===ROMANIZATION_SYSTEM.HEPBURN){const o=new RegExp(/(ん|ン)(?=あ|い|う|え|お|ア|イ|ウ|エ|オ|ぁ|ぃ|ぅ|ぇ|ぉ|ァ|ィ|ゥ|ェ|ォ|や|ゆ|よ|ヤ|ユ|ヨ|ゃ|ゅ|ょ|ャ|ュ|ョ)/g);let e;const n=[];for(;null!==(e=o.exec(a));)n.push(e.index+1);if(0!==n.length){let o="";for(let e=0;e<n.length;e++)o+=0===e?`${a.slice(0,n[e])}'`:`${a.slice(n[e-1],n[e])}'`;o+=a.slice(n[n.length-1]),a=o}}const u=a.length;for(;i<=u;)(t=e[o][a.substring(i,i+2)])?(r+=t,i+=2):(r+=(t=e[o][n=a.substring(i,i+1)])?t:n,i+=1);return r=r.replace(/(っ|ッ)([bcdfghijklmnopqrstuvwyz])/gm,"$2$2"),o!==ROMANIZATION_SYSTEM.PASSPORT&&o!==ROMANIZATION_SYSTEM.HEPBURN||(r=r.replace(/cc/gm,"tc")),r=r.replace(/っ|ッ/gm,"tsu"),o!==ROMANIZATION_SYSTEM.PASSPORT&&o!==ROMANIZATION_SYSTEM.HEPBURN||(r=(r=(r=r.replace(/nm/gm,"mm")).replace(/nb/gm,"mb")).replace(/np/gm,"mp")),o===ROMANIZATION_SYSTEM.NIPPON&&(r=(r=(r=(r=(r=r.replace(/aー/gm,"â")).replace(/iー/gm,"î")).replace(/uー/gm,"û")).replace(/eー/gm,"ê")).replace(/oー/gm,"ô")),o===ROMANIZATION_SYSTEM.HEPBURN&&(r=(r=(r=(r=(r=r.replace(/aー/gm,"ā")).replace(/iー/gm,"ī")).replace(/uー/gm,"ū")).replace(/eー/gm,"ē")).replace(/oー/gm,"ō")),r};exports.toRawRomaji=toRawRomaji;const getStrType=function(a){let o=!1,e=!1;for(let n=0;n<a.length;n++)isKanji(a[n])?o=!0:(isHiragana(a[n])||isKatakana(a[n]))&&(e=!0);return o&&e?1:o?0:e?2:3};exports.getStrType=getStrType;const patchTokens=function(a){for(let o=0;o<a.length;o++)hasJapanese(a[o].surface_form)?a[o].reading?hasHiragana(a[o].reading)&&(a[o].reading=toRawKatakana(a[o].reading)):a[o].surface_form.split("").every(isKana)?a[o].reading=toRawKatakana(a[o].surface_form):a[o].reading=a[o].surface_form:a[o].reading=a[o].surface_form;for(let o=0;o<a.length;o++)!a[o].pos||"助動詞"!==a[o].pos||"う"!==a[o].surface_form&&"ウ"!==a[o].surface_form||o-1>=0&&a[o-1].pos&&"動詞"===a[o-1].pos&&(a[o-1].surface_form+="う",a[o-1].pronunciation?a[o-1].pronunciation+="ー":a[o-1].pronunciation=`${a[o-1].reading}ー`,a[o-1].reading+="ウ",a.splice(o,1),o--);for(let o=0;o<a.length;o++)a[o].pos&&("動詞"===a[o].pos||"形容詞"===a[o].pos)&&a[o].surface_form.length>1&&("っ"===a[o].surface_form[a[o].surface_form.length-1]||"ッ"===a[o].surface_form[a[o].surface_form.length-1])&&o+1<a.length&&(a[o].surface_form+=a[o+1].surface_form,a[o].pronunciation?a[o].pronunciation+=a[o+1].pronunciation:a[o].pronunciation=`${a[o].reading}${a[o+1].reading}`,a[o].reading+=a[o+1].reading,a.splice(o+1,1),o--);return a};exports.patchTokens=patchTokens;const kanaToHiragna=function(a){return toRawHiragana(a)};exports.kanaToHiragna=kanaToHiragna;const kanaToKatakana=function(a){return toRawKatakana(a)};exports.kanaToKatakana=kanaToKatakana;const kanaToRomaji=function(a,o){return toRawRomaji(a,o)};exports.kanaToRomaji=kanaToRomaji; },{}]},{},[2])(2) });