注意: 保存後、変更を確認するにはブラウザーのキャッシュを消去する必要がある場合があります。

  • Firefox / Safari: Shift を押しながら 再読み込み をクリックするか、Ctrl-F5 または Ctrl-R を押してください (Mac では ⌘-R)
  • Google Chrome: Ctrl-Shift-R を押してください (Mac では ⌘-Shift-R)
  • Internet Explorer / Microsoft Edge: Ctrl を押しながら 最新の情報に更新 をクリックするか、Ctrl-F5 を押してください
  • Opera: Ctrl-F5を押してください
// このスクリプトは [[MediaWiki:Gadget-char-convert0.js]] から 2015-12-13に取り込んだものを改変しています。
// 簡単な説明、詳細は[[MediaWiki:Gadget-char-convert0.js]]を参照してください。

// ボタン操作により辞書ファイルを元に変換テーブルを作成し、
// classがmw-body-contentのDIVに対し、色を付けずに常用漢字を旧漢字に置換 
$(function() {
	var namespaceNumber = mw.config.get('wgNamespaceNumber');
	if (namespaceNumber != 250) return; //ページ名前空間に適用
	$("#p-namespaces>ul").append($("<li><span><a>旧字2</a></span></li>").attr({'id': 'toc1_btn1','title':'旧漢字に変換(編集用)'}).css({'color':'#0000ff','cursor':'pointer'}));
	var dicData;
	var dfd = new $.Deferred();
	$(document).on('click','#toc1_btn1',function(){
		getDic();
		dfd.promise().then(function() {
			console.log('deferred done');
			var rp_data0 = arrangeData(dicData);
			var txt=  $('.mw-body-content').html();
			console.log("replace-start");
			$.each(rp_data0, function(key, value){
			//	console.log("置換文字:" + value + " → " + key);
				txt = txt.replace(new RegExp(value, 'g'),key);
			});
			$('.mw-body-content').html(txt);
			console.log("replace-end");
			$('#toc1_btn1, #toc1_btn1 span a').css({'color':'#000000'});
		});
	}); 

//辞書データの取得
	function getDic() {
		var pageids = "18270"; //辞書ページのPAGEIDS:"18270"
		var dAstr = "*"; //データの中のマーカー
		$.ajax({
			type: "GET",
			scriptCharset: "utf-8",
			dataType: "jsonp",
			url: "https://ja.wikisource.org/w/api.php?action=query&prop=revisions&rvprop=content&format=json&pageids="+pageids,
		})
		.done(function(json) {
			dicData = json.query.pages[pageids].revisions[0][dAstr];
			dfd.resolve();			
		})
		.fail(function() {
				alert( "辞書読取エラー" );
		});		
	}
	
// データの整形、ユニコード文字化
	function arrangeData(ddata) {
		var lines = ddata.split( '\n' );
		var strD =[];
		for ( var i = 1; i < lines.length-1; i++ ) {
			if (lines[i].match(/\*\s*([\S]*)\s*[::→]\s*([\S]*)/)) {
				if (strD.length !==0) strD = strD + ", "; 
				strD = strD + "\""+RegExp.$1+"\":\""+RegExp.$2+"\"";
				}
		}
		strD=strD.replace(/\;/g,"").replace( /&#x([0-9A-F]+)/g , function(c){
			return unescape("%u"+RegExp.$1);
		});
		var strK = JSON.parse("{" + strD + "}");
	return strK; 
	}
});