利用者:Naggy Nagumo/Edit Main.js

出典: フリー多機能辞典『ウィクショナリー日本語版(Wiktionary)』
ナビゲーションに移動 検索に移動

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

  • 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を押してください
// <nowiki>

const EDIT = {
	テキストボックスID: 'wpTextbox1',
	要約欄ID: 'wpSummary',
	コメント退避開始識別子: '◆◆◇◆',
	コメント退避終了識別子: '◆◆◇◆',

	退避コメントフォーマットを取得: function (i) {
		return `${EDIT.コメント退避開始識別子}[${i}]${EDIT.コメント退避終了識別子}`;
	},

	importScripts: function () {
		importScript('利用者:Naggy Nagumo/Edit Constants.js');
		importScript('利用者:Naggy Nagumo/Edit_SortSection.js');
		importScript('利用者:Naggy Nagumo/Edit_Formatter.js');
		importScript('利用者:Naggy Nagumo/英語版ウィクショナリーからのコピーをサポート.js');

		const agent = window.navigator.userAgent.toLowerCase();
		const chrome = (agent.indexOf('chrome') !== -1) && (agent.indexOf('edge') === -1) && (agent.indexOf('opr') === -1);
		if (chrome) {
			importScript('利用者:Naggy Nagumo/翻訳並べ替え.js');
		}
	},

	preloadText: function () {
		if (window.preloadedText) {
			return;
		}
		window.preloadedText = true;

		const text = mw.util.getParamValue('preloadtext');

		if (!text) {
			return;
		}

		const textBox = $('#wpTextbox1');
		if (!(textBox.val())) {
			textBox.val(text);
		}
	},

	言語名の漢字の読み方を推測: function (言語名) {
		return 言語名
			.replace(/北朝鮮/, 'きたちょうせん')
			.replace(/中国/, 'ちゅうごく')
			.replace(/韓国/, 'かんこく')
			.replace(/朝鮮/, 'ちょうせん')
			.replace(/^現代/, 'げんだい')
			.replace(/^古典/, 'こてん')
			.replace(/^北部/, 'ほくぶ')
			.replace(/^南部/, 'なんぶ')
			.replace(/^東部/, 'とうぶ')
			.replace(/^西部/, 'せいぶ')
			.replace(/^中部/, 'ちゅうぶ')
			.replace(/^古/, 'こ')
			.replace(/^北/, 'きた')
			.replace(/^南/, 'みなみ')
			.replace(/^東/, 'ひがし')
			.replace(/^西/, 'にし')
			.replace(/^中/, 'ちゅう')
			.replace(/語$/, 'ご');
	},

	コメントを退避: function (ウィキテキスト, コメント) {
		let コメント正規表現 = /<!--[\w\W]*?-->/g;
		let 正規表現実行結果;
		let i = 0;
		while ((正規表現実行結果 = コメント正規表現.exec(ウィキテキスト)) !== null) {
			// 全く同じコメントが複数あった場合、一つ目のデータを保持しておいて、すべて同じ番号でマークする。
			console.log(正規表現実行結果);
			コメント.push(正規表現実行結果[0]);
			ウィキテキスト = ウィキテキスト.split(正規表現実行結果[0]).join(this.退避コメントフォーマットを取得(i));
			i++;
		}

		return ウィキテキスト;
	},

	コメントを戻す: function (ウィキテキスト, コメント) {
		Object.keys(コメント).forEach(function (i) {
			ウィキテキスト = ウィキテキスト.split(EDIT.退避コメントフォーマットを取得(i)).join(コメント[i]);
		});

		return ウィキテキスト;
	},

	退避済みコメントを除去: function (ウィキテキスト) {
		let コメント正規表現 = new RegExp(`${EDIT.コメント退避開始識別子}\\[\\d+\\]${EDIT.コメント退避終了識別子}`, 'g');

		return ウィキテキスト.replace(コメント正規表現, '');
	},

	コメントを除去: function (ウィキテキスト) {
		let コメント正規表現 = /<!--[\w\W]*?-->/g;
		let 正規表現実行結果;
		while ((正規表現実行結果 = コメント正規表現.exec(ウィキテキスト)) !== null) {
			console.log(正規表現実行結果);
			ウィキテキスト = ウィキテキスト.split(正規表現実行結果[0]).join('');
		}

		return ウィキテキスト;
	},

	要約欄にメッセージを挿入: function (メッセージ) {
		let 要約 = $('#' + EDIT.要約欄ID).val();
		if (要約.indexOf(メッセージ) === -1) {
			$('#' + EDIT.要約欄ID).val(要約 + メッセージ);
		}
	}
};
EDIT.importScripts();
$(EDIT.preloadText);

// </nowiki>