/*
* @title shabetter!!!
* @description Webページを「シャベッタァァァァァァァァァ」化する
* @include http://*
* @license MIT License
*/
(function(){
function shabetter(text){
return toHankakuKatakana(text).replace(/[ヲ-ョア-゚]+/g,extendLastVowel);
}
function toHankakuKatakana(str){
return str.replace(/[ぁ-んァ-ヴー]/g,function(c){
return toHankakuKatakana.kana_conv_table[c] || c;
});
}
toHankakuKatakana.kana_conv_table = {
"ー":"ー", "ぁ":"ァ", "あ":"ア", "ぃ":"ィ", "い":"イ", "ぅ":"ゥ", "う":"ウ", "ぇ":"ェ", "え":"エ",
"ぉ":"ォ", "お":"オ", "か":"カ","が":"ガ", "き":"キ","ぎ":"ギ", "く":"ク","ぐ":"グ", "け":"ケ",
"げ":"ゲ", "こ":"コ","ご":"ゴ", "さ":"サ","ざ":"ザ", "し":"シ","じ":"ジ", "す":"ス","ず":"ズ",
"せ":"セ","ぜ":"ゼ", "そ":"ソ","ぞ":"ゾ", "た":"タ","だ":"ダ", "ち":"チ","ぢ":"ヂ", "っ":"ッ",
"つ":"ツ","づ":"ヅ", "て":"テ","で":"デ", "と":"ト","ど":"ド", "な":"ナ", "に":"ニ", "ぬ":"ヌ",
"ね":"ネ", "の":"ノ", "は":"ハ","ば":"バ","ぱ":"パ", "ひ":"ヒ","び":"ビ","ぴ":"ピ", "ふ":"フ",
"ぶ":"ブ","ぷ":"プ", "へ":"ヘ","べ":"ベ","ぺ":"ペ", "ほ":"ホ","ぼ":"ボ","ぽ":"ポ", "ま":"マ",
"み":"ミ", "む":"ム", "め":"メ", "も":"モ", "ゃ":"ャ", "や":"ヤ", "ゅ":"ュ", "ゆ":"ユ", "ょ":"ョ",
"よ":"ヨ", "ら":"ラ", "り":"リ", "る":"ル", "れ":"レ", "ろ":"ロ", "わ":"ワ", "を":"ヲ", "ん":"ン",
"ァ":"ァ", "ア":"ア", "ィ":"ィ", "イ":"イ", "ゥ":"ゥ", "ウ":"ウ", "ェ":"ェ", "エ":"エ", "ォ":"ォ",
"オ":"オ", "カ":"カ","ガ":"ガ", "キ":"キ","ギ":"ギ", "ク":"ク","グ":"グ", "ケ":"ケ","ゲ":"ゲ",
"コ":"コ","ゴ":"ゴ", "サ":"サ","ザ":"ザ", "シ":"シ","ジ":"ジ", "ス":"ス","ズ":"ズ", "セ":"セ",
"ゼ":"ゼ", "ソ":"ソ","ゾ":"ゾ", "タ":"タ","ダ":"ダ", "チ":"チ","ヂ":"ヂ", "ッ":"ッ", "ツ":"ツ",
"ヅ":"ヅ", "テ":"テ","デ":"デ", "ト":"ト","ド":"ド", "ナ":"ナ", "ニ":"ニ", "ヌ":"ヌ", "ネ":"ネ",
"ノ":"ノ", "ハ":"ハ","バ":"バ","パ":"パ", "ヒ":"ヒ","ビ":"ビ","ピ":"ピ", "フ":"フ","ブ":"ブ",
"プ":"プ", "ヘ":"ヘ","ベ":"ベ","ペ":"ペ", "ホ":"ホ","ボ":"ボ","ポ":"ポ", "マ":"マ", "ミ":"ミ",
"ム":"ム", "メ":"メ", "モ":"モ", "ャ":"ャ", "ヤ":"ヤ", "ュ":"ュ", "ユ":"ユ", "ョ":"ョ", "ヨ":"ヨ",
"ラ":"ラ", "リ":"リ", "ル":"ル", "レ":"レ", "ロ":"ロ", "ワ":"ワ", "ヲ":"ヲ", "ン":"ン","ヴ":"ヴ"
};
function extendLastVowel(str){
var last = str.charAt(str.length-1);
function repeat(c, n){
var str = "";
for(var i=0; i<n; ++i){
str += c;
}
return str;
}
if(last == '゙' || last == '゚'){
if(last.length <= 1) return str;
last = str.charAt(str.length-2);
}
return str + repeat(extendLastVowel.vowel_table[last] || "", 4);
}
extendLastVowel.vowel_table = (function(){ // Just-In-Time lol
var pre = [
["ァ","ア","カ","サ","タ","ナ","ハ","マ","ヤ","ラ","ワ","ャ"],
["ィ","イ","キ","シ","チ","ニ","ヒ","ミ", "リ", ],
["ゥ","ウ","ク","ス","ツ","ヌ","フ","ム","ユ","ル", "ュ"],
["ェ","エ","ケ","セ","テ","ネ","ヘ","メ", "レ", ],
["ォ","オ","コ","ソ","ト","ノ","ホ","モ","ヨ","ロ","ヲ","ョ"]
];
var newobj = {};
for(var i=0; i<pre.length; ++i){
var cur = pre[i];
for(var j=0; j<cur.length; ++j){
newobj[cur[j]] = cur[0];
}
}
return newobj;
})();
document.body.innerHTML = shabetter(document.body.innerHTML);
})();