var toRoman = (function( ) {
var roman = {
'1':'1', '2':'2', '3':'3', '4':'4', '5':'5', '6':'6', '7':'7', '8':'8', '9':'9', '0':'0',
'!':'!', '”':'"', '#':'#', '$':'$', '%':'%', '&':'&', '’':"'", '(':'(', ')':')', '=':'=',
'〜':'~', '|':'|', '@':'@', '‘':'`', '+':'+', '*':'*', ';':";", ':':':', '<':'<', '>':'>',
'、':',', '。':'.', '/':'/', '?':'?', '_':'_', '・':'・', '「':'[', '」':']', '{':'{', '}':'}',
'¥':'\\', '^':'^',
'ふぁ':'fa', 'ふぃ':'fi', 'ふぇ':'fe', 'ふぉ':'fo',
'きゃ':'kya', 'きゅ':'kyu', 'きょ':'kyo',
'しゃ':'sha', 'しゅ':'shu', 'しょ':'sho',
'ちゃ':'tya', 'ちゅ':'tyu', 'ちょ':'tyo',
'にゃ':'nya', 'にゅ':'nyu', 'にょ':'nyo',
'ひゃ':'hya', 'ひゅ':'hyu', 'ひょ':'hyo',
'みゃ':'mya', 'みゅ':'myu', 'みょ':'myo',
'りゃ':'rya', 'りゅ':'ryu', 'りょ':'ryo',
'ふゃ':'fya', 'ふゅ':'fyu', 'ふょ':'fyo',
'ぴゃ':'pya', 'ぴゅ':'pyu', 'ぴょ':'pyo',
'びゃ':'bya', 'びゅ':'byu', 'びょ':'byo',
'ぢゃ':'dya', 'ぢゅ':'dyu', 'ぢょ':'dyo',
'じゃ':'ja', 'じゅ':'ju', 'じょ':'jo',
'ぎゃ':'gya', 'ぎゅ':'gyu', 'ぎょ':'gyo',
'ぱ':'pa', 'ぴ':'pi', 'ぷ':'pu', 'ぺ':'pe', 'ぽ':'po',
'ば':'ba', 'び':'bi', 'ぶ':'bu', 'べ':'be', 'ぼ':'bo',
'だ':'da', 'ぢ':'di', 'づ':'du', 'で':'de', 'ど':'do',
'ざ':'za', 'じ':'zi', 'ず':'zu', 'ぜ':'ze', 'ぞ':'zo',
'が':'ga', 'ぎ':'gi', 'ぐ':'gu', 'げ':'ge', 'ご':'go',
'わ':'wa', 'ゐ':'wi', 'う':'wu', 'ゑ':'we', 'を':'wo',
'ら':'ra', 'り':'ri', 'る':'ru', 'れ':'re', 'ろ':'ro',
'や':'ya', 'ゆ':'yu', 'よ':'yo',
'ま':'ma', 'み':'mi', 'む':'mu', 'め':'me', 'も':'mo',
'は':'ha', 'ひ':'hi', 'ふ':'hu', 'へ':'he', 'ほ':'ho',
'な':'na', 'に':'ni', 'ぬ':'nu', 'ね':'ne', 'の':'no',
'た':'ta', 'ち':'ti', 'つ':'tu', 'て':'te', 'と':'to',
'さ':'sa', 'し':'si', 'す':'su', 'せ':'se', 'そ':'so',
'か':'ka', 'き':'ki', 'く':'ku', 'け':'ke', 'こ':'ko',
'あ':'a', 'い':'i', 'う':'u', 'え':'e', 'お':'o',
'ぁ':'la', 'ぃ':'li', 'ぅ':'lu', 'ぇ':'le', 'ぉ':'lo',
'ヶ':'ke', 'ヵ':'ka',
'ん':'n', 'ー':'-', ' ':' ',
'ファ':'fa', 'フィ':'fi', 'フェ':'fe', 'フォ':'fo',
'キャ':'kya', 'キュ':'kyu', 'キョ':'kyo',
'シャ':'sha', 'シュ':'shu', 'ショ':'sho',
'チャ':'tya', 'チュ':'tyu', 'チョ':'tyo',
'ニャ':'nya', 'ニュ':'nyu', 'ニョ':'nyo',
'ヒャ':'hya', 'ヒュ':'hyu', 'ヒョ':'hyo',
'ミャ':'mya', 'ミュ':'myu', 'ミョ':'myo',
'リャ':'rya', 'リュ':'ryu', 'リョ':'ryo',
'フャ':'fya', 'フュ':'fyu', 'フョ':'fyo',
'ピャ':'pya', 'ピュ':'pyu', 'ピョ':'pyo',
'ビャ':'bya', 'ビュ':'byu', 'ビョ':'byo',
'ヂャ':'dya', 'ヂュ':'dyu', 'ヂョ':'dyo',
'ジャ':'ja', 'ジュ':'ju', 'ジョ':'jo',
'ギャ':'gya', 'ギュ':'gyu', 'ギョ':'gyo',
'パ':'pa', 'ピ':'pi', 'プ':'pu', 'ペ':'pe', 'ポ':'po',
'バ':'ba', 'ビ':'bi', 'ブ':'bu', 'ベ':'be', 'ボ':'bo',
'ダ':'da', 'ヂ':'di', 'ヅ':'du', 'デ':'de', 'ド':'do',
'ザ':'za', 'ジ':'zi', 'ズ':'zu', 'ゼ':'ze', 'ゾ':'zo',
'ガ':'ga', 'ギ':'gi', 'グ':'gu', 'ゲ':'ge', 'ゴ':'go',
'ワ':'wa', 'ウィ':'wi', 'ウェ':'we', 'ヲ':'wo',
'ラ':'ra', 'リ':'ri', 'ル':'ru', 'レ':'re', 'ロ':'ro',
'ヤ':'ya', 'ユ':'yu', 'ヨ':'yo',
'マ':'ma', 'ミ':'mi', 'ム':'mu', 'メ':'me', 'モ':'mo',
'ハ':'ha', 'ヒ':'hi', 'フ':'hu', 'ヘ':'he', 'ホ':'ho',
'ナ':'na', 'ニ':'ni', 'ヌ':'nu', 'ネ':'ne', 'ノ':'no',
'タ':'ta', 'チ':'ti', 'ツ':'tu', 'テ':'te', 'ト':'to',
'サ':'sa', 'シ':'si', 'ス':'su', 'セ':'se', 'ソ':'so',
'カ':'ka', 'キ':'ki', 'ク':'ku', 'ケ':'ke', 'コ':'ko',
'ア':'a', 'イ':'i', 'ウ':'u', 'エ':'e', 'オ':'o',
'ァ':'la', 'ィ':'li', 'ゥ':'lu', 'ェ':'le', 'ォ':'lo',
'ン':'n', 'ー':'-', '・':'.', '、':','
};
var reg_tu = /[っッ]([bcdfghijklmnopqrstuvwyz])/gm;
var reg_xtu = /っ|ッ/gm;
return function ( str ) {
var pnt = 0;
var max = str.length;
var s, r;
var txt = '';
while( pnt <= max ) {
if( r = roman[ str.substring( pnt, pnt + 3 ) ] ) {
txt += r;
pnt += 3;
} else if( r = roman[ str.substring( pnt, pnt + 2 ) ] ) {
txt += r;
pnt += 2;
} else {
txt += ( r = roman[ s = str.substring( pnt, pnt + 1 ) ] ) ? r: s;
pnt += 1;
}
}
txt = txt.replace( reg_tu, '$1$1' );
txt = txt.replace( reg_xtu, 'xtu' );
return txt;
};
})();