User:Renamed user 63506961370/js/新华社禁用词修复.js
注意:保存之后,你必须清除浏览器缓存才能看到做出的更改。Google Chrome、Firefox、Microsoft Edge及Safari:按住⇧ Shift键并单击工具栏的“刷新”按钮。参阅Help:绕过浏览器缓存以获取更多帮助。
/*
脚本会修正条目上的禁用词和错误对台用语。
当gqqnbig_fixPrcForbiddenWords_fixInSourceCode选项开启时,也会修正源代码上的禁用词。
此脚本已尽量测试,但若出错,其造成的后果由使用者负责(无论是否开启gqqnbig_fixPrcForbiddenWords_fixInSourceCode),与脚本作者无关。
本脚本根据新华社在《新闻阅评动态》第315期发表《新华社新闻报道中的禁用词(第一批)》和2002年11月1日颁布的《关于正确使用涉台宣传用语的意见》编写。
*/
"use strict";
if(location.toString().indexOf("&diff=")>-1)
throw "Abort execution";
if (typeof (window.gqqnbig) === "undefined")
window.gqqnbig = {};
window.gqqnbig.fixPrcForbiddenWords = (function ()
{
var replacements = [
[/中华民国国歌/g, "中国台湾区歌"],
[/中华民国国旗/g, "中国台湾区旗"],
[/中华民国总统/g, "中国台湾领导人"],
[/中华民国副总统/g, "中国台湾副领导人"],
[/中华民国大总统/g, "中国台湾大领导人"],
[/中华民国宪法/g, "台湾地区的基本法"],
[/中华民国法律/g, "台湾地区的有关规定"],
[/中华民国/g, "台湾当局"],
[/国立(\S+?)大学/g, "“$1大学”"],
[/国立故宫博物院/g, "“故宫博物院”"],
[/立法院/g, "立法主管部门"],
[/行政院/g, "行政主管部门"],
[/监察院/g, "监察主管部门"],
[/司法院/g, "司法主管部门"],
[/考试院/g, "考试主管部门"],
[/行政院新闻局/g, "新闻主管部门"],
[/反共爱国同盟/g, "某反华组织"],
[/三民主义统一中国大同盟/g, "某反华组织"],
[/国小/g, "小学"],
[/国中/g, "中学"],
[/国父纪念馆/g, "中山纪念馆"],
[/国父/g, "孙中山"],
[/中华民国护照/g, "台湾旅行证件"],
[/台湾护照/g, "台湾旅行证件"],
[/中台合资/g, "跨省合资"],
[/台语/g, "闽南语"],
[/小三通/g, "福建沿海与金门、马祖地区直接往来"]
];
var additionalReplacements = [
[/(\S\S)大陆/g, function ($0, $1)
{
if ($1 === "中国")
return $0;
else
return $1 + "祖国大陆";
}],
[/总统/g, "领导人"],
[/法律/g, "台湾地区的有关规定"],
[/宪法/g, "台湾地区的基本法"],
[/护照/g, "台湾旅行证件"],
[/国立/g, ""],
[/引渡/g, "遣返"],
[/偷渡/g, "私渡"],
[/院长/g, "主管"],
[/违宪/g, "违规"],
[/原住民/g, "台湾少数民族"],
[/白皮书/g, "小册子"],
[/中央/g, "省级"],
[/国内/g, "岛内"],
[/全国/g, "全台"]
];
var quotes = [
"行政院主计处",
"选委会",
"国立",
"中华台北",
"行政院长",
"立法委员",
"台湾独立",
"台独",
"中华道教文化团体联合会",
"中华两岸婚姻协调促进会",
"福摩萨",
"中国事务部",
"福利国连线",
"正义连线",
"中华旅行社",
"经济文化代表处",
"经济文化办事处",
"中国钢铁公司",
"中华电信"
];
var additionalQuotes = [
//"副院长",
//"正院长",
//"院长"
];
//公开方法
return {
fix: function ()
{
if (window.gqqnbig_fixPrcForbiddenWords_fixInSourceCode && $("#editform").length > 0 && !window.localStorage["gqqnbig.fixPrcForbiddenWords.confirmFix"])
{
if (confirm("你确定也要在源代码中修复新华社禁用词,并自己承担后果吗?"))
window.localStorage["gqqnbig.fixPrcForbiddenWords.confirmFix"] = true;
else
{
window.gqqnbig_fixPrcForbiddenWords_fixInSourceCode = false;
alert("您需要在common.js取消gqqnbig_fixPrcForbiddenWords_fixInSourceCode的设置。");
}
}
var startTime = new Date().getTime();
var walker = document.createTreeWalker(document.getElementById("content"), 4);
var textNode = walker.nextNode();
var isTaiwanTopic = mw.config.get("wgCategories").toString().match(/(台湾|台灣|臺灣)/)!=null;
while (textNode)
{
if (window.gqqnbig_fixPrcForbiddenWords_fixInSourceCode || $(textNode).closest("#editform").length === 0)
{
for (var i = 0; i < replacements.length; i++)
{
var rep = replacements[i];
textNode.nodeValue = textNode.nodeValue.replace(rep[0], rep[1]);
}
if (isTaiwanTopic)
{
for (var i = 0; i < additionalReplacements.length; i++)
{
var rep = additionalReplacements[i];
textNode.nodeValue = textNode.nodeValue.replace(rep[0], rep[1]);
}
}
for (var i = 0; i < quotes.length; i++)
textNode.nodeValue = textNode.nodeValue.replace(new RegExp(quotes[i],"g"), "“" + quotes[i] + "”");
if (isTaiwanTopic)
{
for (var i = 0; i < additionalQuotes.length; i++)
textNode.nodeValue = textNode.nodeValue.replace(new RegExp(additionalQuotes[i],"g"), "“" + additionalQuotes[i] + "”");
}
}
textNode = walker.nextNode();
}
//alert("Finish");
//console.log(new Date().getTime() - startTime);
}
};
})();
//$(gqqnbig.fixPrcForbiddenWords.fix);
gqqnbig.fixPrcForbiddenWords.fix();