「利用者:CES1596/MediaWiki-Gadget-to-old-char0.js」の版間の差分

削除された内容 追加された内容
CES1596 (トーク | 投稿記録)
MediaWikiの更新に伴う変更
(相違点なし)

2020年6月3日 (水) 18:49時点における版

// このスクリプトは[[MediaWiki:Gadget-char-convert0.js]](2015-10-24T06:17:57, UTC)をもとに作成しています。
// Gadget-char-convert0.jsについては[[MediaWiki:Gadget-char-convert0.js]]を参照してください。

// ボタン操作により辞書ファイルをもとに変換テーブルを作成し、classがmw-content-textの要素に対して、
// 新漢字と旧漢字の代替候補を「▼▲」で挟んで表示します。
$(function() {
	var namespaceNumber = mw.config.get('wgNamespaceNumber');
	if (namespaceNumber !== 0 && namespaceNumber !== 2 && namespaceNumber != 250) return; //標準、利用者、ページ名前空間に適用
	$("#p-namespaces ul").append($("<li><span><a>旧字</a></span></li>").attr({'id': 'toc0_btn1','title':'旧漢字の代替候補を表示'}).css({'color':'#0000ff','cursor':'pointer'}));
	var dicData;
	var dfd = new $.Deferred();
	$(document).on('click','#toc0_btn1',function(){
		getDic();
		dfd.promise().then(function() {
			var rp_data0 = arrangeData(dicData);
                        var txt=document.getElementById('mw-content-text')
			$.each(rp_data0, function(value, key){
				txt.innerHTML = txt.innerHTML.replace(new RegExp(key, 'g'), "▼" + key + value + "▲");
			});
			$('#toc0_btn1, #toc0_btn1 span a').css({'color':'#000000'});
		});
	}); 

//辞書データの取得
	function getDic() {
		var pageids = "18270"; //辞書のページID:"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+"\"";
				}
		}
		var strK = $.parseJSON("{" + strD + "}");
	return strK; 
	}
});