mata-shabetter!!!

    
      
  • /*
     * @title mata-shabetter!!!
     * @description Webページを「シャベッタァァァァァァァァァ」化する http://let.hatelabo.jp/zakuro563/let/gYC-y7itjKSZWA の改悪版
     * @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(str.length <= 1) return str;
    			last = str.charAt(str.length-2);
    		}
    		return str + repeat(extendLastVowel.vowel_table[last] || "", 3);
    	}
    	extendLastVowel.vowel_table = (function(){
    		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);
    })();
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。

History

  1. 2011/01/27 23:50:45 - 2011-01-27
  2. 2011/01/27 23:40:00 - 2011-01-27