利用者:Sat.d.h./kana-henkan.js

提供:Wikisource

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

  • 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を押してください
/**
 * ボタンを画面右上に配置。
 * クリックにより、classがkatakaのspanでない箇所のカタカナ部をひらがなに置換
 */
$(function() {
	// 標準とユーザページに適用
	var namespaceNumber = mw.config.get('wgNamespaceNumber');
	if (namespaceNumber !== 0 && namespaceNumber !== 2) return;
	$('#p-namespaces>ul').append($('<li><span><a>カナ変</a></span>')
		.attr({'id':'cnv_btn', 'title':'カタカナ-ひらがな変換'}));
	$(document).on('click','#cnv_btn:not(.cnv_now)',function(){
		// 置換対象の設定
		$('#content p, #content li, #content dt, #content dd, #content h1, #content h2, #content h3, #content h4, #content h5, #content h6').each(function() {
			var txt = $(this).html();
			$(this).html(
				txt.replace(/(<span class="katakana">.*?<\/span>)/g, '</span>$1<span class="hiragana">')
					.replace(/(^.)/g, '<span class="hiragana">$1')
					.replace(/(.$)/g, '$1</span>')
			);
		});
		
		// 対象の置換
		$('.hiragana').each(function() {
			var txt = $(this).html();
			$(this).html(
				txt.replace(/[ァ-ヴ]/g, function(s) {
					return String.fromCharCode(s.charCodeAt(0) - 0x60);
				})
			);
		});
		
		// 原文に戻すボタンに置き換え
		$('#cnv_btn, #cnv_btn span a').html('<span><a>原文</a></span>').addClass('cnv_now').attr({'title':'原文表示に戻る'});
		$(this).off();
	});
	
	// 原文に戻るボタン(リロード処理)
	$(document).on('click', '#cnv_btn.cnv_now',function() {
		$(this).off();
		window.location.reload();
	});
});