MediaWiki:Gadget-ToolsRedirect-courtesy-and-art-names.js

维基百科,自由的百科全书

注意:保存之后,你必须清除浏览器缓存才能看到做出的更改。Google ChromeFirefoxMicrosoft EdgeSafari:按住⇧ Shift键并单击工具栏的“刷新”按钮。参阅Help:绕过浏览器缓存以获取更多帮助。

/* vim: set noexpandtab ft=javascript ts=4 sw=4: */

mw.loader.using( ['ext.gadget.ToolsRedirect'], function() {
	"use strict";
	var compSurnameReg,
		prefixReg = /[字号號]\s*$/,
		fdc = mw.toolsRedirect.findRedirectCallback,
		compSurnames = [
			'欧阳', '歐陽',
			'令狐',
			'皇甫',
			'上官',
			'司徒',
			'诸葛', '諸葛',
			'司马', '司馬',
			'宇文',
			'呼延',
			'端木',
			'申屠',
			'尉迟', '尉遲',
			'轩辕', '軒轅',
			'夏侯',
			'南宫', '南宮',
			'司空',
			'鲜于', '鮮于',
			'西门', '西門',
			'独孤', '獨孤',
			'东方', '東方',
			'司寇',
			'羊舌',
			'第五',
			'梁丘',
			'锺离', '鍾離',
			'东郭', '東郭',
			'公孙', '公孫',
			'孟孙', '孟孫',
			'仲孙', '仲孫',
			'叔孙', '叔孫',
			'季孙', '季孫',
			'长孙', '長孫',
			'慕容',
			'闾丘', '閭丘',
			'东门', '東門',
			'公羊',
			'万俟',
			'百里',
			'公冶',
			'呼延',
			'浮屠',
			'即墨',
			'单于', '單于',
			'田丘'
		];

	compSurnameReg = new RegExp(
		'^(' + compSurnames.join('|') + ').');
	
	function findSurname( pagename ) {
		if ( compSurnameReg.test( pagename ) ) {
			return compSurnameReg.exec( pagename )[1];
		}
		else {
			return pagename[0];
		}
	}

	fdc( function ( pagename, $content, titles ) {
		var surname,
			retTitles = [];

		$content.find( '> p > b' ).each( function() {
			var prevNode = this.previousSibling;
			if ( prevNode && prefixReg.test( prevNode.textContent ) ) {
				// trim() is not supported by IE<9
				var name = jQuery( this ).text().replace( /^\s+|\s+$/g, '' );
				if ( !surname ) {
					surname = findSurname( pagename );
				}
				retTitles.push( surname + name );
			}
		} );

		return jQuery.unique( retTitles );
	} );

} );