利用者:Naggy Nagumo/赤リンク.js
ナビゲーションに移動
検索に移動
注意: 保存後、変更を確認するにはブラウザーのキャッシュを消去する必要がある場合があります。
- 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>
function 緑リンク() {
var 品詞名と品詞コードの対応表 = {
"名詞": { コード: "noun", 略記: "noun" },
"動詞": { コード: "verb", 略記: "verb" },
"形容詞": { コード: "adjective", 略記: "adj" },
"副詞": { コード: "adverb", 略記: "adv" },
"接続詞": { コード: "conjunction", 略記: "con" },
"数詞": { コード: "num", 略記: "" },
"感動詞": { コード: "interj", 略記: "interj" },
"代名詞": { コード: "pronoun", 略記: "" },
"固有名詞": { コード: "name", 略記: "proper noun" },
"接頭辞": { コード: "prefix", 略記: "prefix" },
"接尾辞": { コード: "suffix", 略記: "suffix" }
};
mw.util.addCSS('a.new.green-link { color: #2c0 }');
function 品詞判別(親, リンク) {
var 品詞名 = $('h3').add($(親).find('h3'))
.filter(function () {
return Boolean(this.compareDocumentPosition(リンク) & Node.DOCUMENT_POSITION_FOLLOWING);
})
.last()
.find('.mw-headline')
.text()
.split(/[::・0-9 ]/)[0];
if (品詞名と品詞コードの対応表[品詞名]) {
return {
品詞名: 品詞名,
コード: 品詞名と品詞コードの対応表[品詞名].コード,
略記: 品詞名と品詞コードの対応表[品詞名].略記
};
}
else {
return null;
}
}
function URLにパラメーターを追加(プロパティ) {
if (!プロパティ) {
return;
}
var 現ページタイトル = mw.config.get('wgTitle');
var 要約 = プロパティ.要約;
var 品詞 = プロパティ.項目.品詞;
var 品詞略記 = プロパティ.項目.品詞略記;
var lang = プロパティ.項目.lang;
var tr = プロパティ.項目.tr;
var gender = プロパティ.項目.gender;
var テキスト = '';
テキスト += '=={{' + lang + '}}==\n';
テキスト += '==={{' + 品詞 + '}}===\n';
if (品詞略記) {
テキスト += '{{' + lang + '-' + 品詞略記;
}
else {
テキスト += '{{head|' + lang + '|' + 品詞;
}
if (tr) {
テキスト += '|tr=' + tr;
}
if (gender) {
テキスト += '|g=' + gender;
}
テキスト += '}}\n';
テキスト += '# [[' + 現ページタイトル + ']]。\n';
プロパティ.リンク.href +=
'&summary=' +
encodeURIComponent(要約) +
'&preloadtext=' +
encodeURIComponent(テキスト);
}
function リンクを更新(プロパティ) {
var url = プロパティ.リンク.href;
if (url.indexOf('?') !== -1) {
$(プロパティ.リンク).addClass('green-link');
URLにパラメーターを追加(プロパティ);
}
}
function 実行(親) {
if (mw.config.get('wgNamespaceNumber') !== 0) {
return;
}
var タイトル = mw.config.get('wgTitle');
if (!親) {
親 = $('#bodyContent');
}
親.find('span.translation a.new').each(function () {
var 項目 = $(this)
.closest('.translation')
.data();
var 品詞情報 = 品詞判別(親, this);
if (品詞情報) {
項目.品詞 = 品詞情報.コード;
項目.品詞略記 = 品詞情報.略記;
リンクを更新({
リンク: this,
要約: '[[' + タイトル + ']]の訳語',
項目: 項目,
});
}
});
}
実行();
}
mw.hook('wikipage.content').add(緑リンク);
// </nowiki>