User:NHC/Clean up bnb.js
外观
< User:NHC
注意:保存之后,你必须清除浏览器缓存才能看到做出的更改。Google Chrome、Firefox、Microsoft Edge及Safari:按住⇧ Shift键并单击工具栏的“刷新”按钮。参阅Help:绕过浏览器缓存以获取更多帮助。
//Clean up bold and brackets
//@author [[User:WhitePhosphorus]]
//部分代碼參考自[[User:Peacearth/link-ts.js]]
//然而還沒有看懂,總之先搬過來
//介面晚點再處裡
var LTUI;
switch (mw.config.get('wgUserLanguage')) {
case 'zh':
case 'zh-cn':
case 'zh-hans':
case 'zh-my':
case 'zh-sg':
LTUI = {
Translate: '翻译',
TranslateLinks: '翻译链接',
LinkTranslator: '链接翻译器',
TLTitle: '自动翻译来自语言维基百科文本中的链接',
SourceLanguageCode: '目标维基的语言代码:',
OriginalLink: '原链接:',
NOLINKINPAGE: '此页没有链接',
Done: '完成',
NoVE: 'link-ts不支持可视化模式,请切换到源代码模式。',
EditMessage: '[[MediaWiki:Gadget-link-ts.js|翻译]]外文链接',
// OPTION
SelectedTextOnly: '只处理选中文本',
IfFound: '如果找到对应中文条目的话——',
KeepOriginalText2: '以原文显示蓝链([[中文|Original Text]])',
CommentOriginalLink: '注释原链接',
IfNotFound: '否则的话——',
UseLangLink: '转成跨语言链接(即{{tsl}}或{{link-xx}})',
UseTsl: '使用{{tsl}}而非{{link-xx}}',
KeepOriginalText: '以原文显示绿链({{tsl|en|Orin||Orin text}})',
MarkWrongPage: '如果不转成跨语言链接,而且(在原文或中文)属于红链,那么把它标记出来',
// STATUS
PARSEFAILED: '解析失败',
ERROR: '错误',
NOLINK: '没有链接',
MULTIPLELINK: '多个连接',
PAGESAME: '页面相同',
PAGEDIFF: '页面不同',
DONTEXIST: '页面不存在',
};
break;
default:
LTUI = {
Translate: '翻譯',
TranslateLinks: '翻譯連結',
LinkTranslator: '連結翻譯器',
TLTitle: '自動清理文本錯誤粗體及括弧',
SourceLanguageCode: '目標維基的語言代碼:',
OriginalLink: '原連結:',
NOLINKINPAGE: '此頁沒有任何連結',
Done: '完成',
NoVE: 'link-ts不支援視覺化模式,請切換到原始碼模式。',
EditMessage: '使用[[User:NHC/Clean up bnb.js|清理格式]]小工具進行編輯',
// OPTION
SelectedTextOnly: '只處理選中文本',
IfFound: '如果找到對應中文條目的話——',
KeepOriginalText2: '以原文顯示藍連([[中文|Original Text]])',
CommentOriginalLink: '註釋原連結',
IfNotFound: '否則的话——',
UseLangLink: '轉成跨語言連結(即{{tsl}}或{{link-xx}})',
UseTsl: '使用{{tsl}}而非{{link-xx}}',
KeepOriginalText: '以原文顯示綠連({{tsl|en|Orin||Orin text}})',
MarkWrongPage: '如果不轉成跨語言連結,而且(在原文或中文)屬於紅連,那麼把它標記出來',
// STATUS
PARSEFAILED: '解析失敗',
ERROR: '錯誤',
NOLINK: '沒有連結',
MULTIPLELINK: '多個連結',
PAGESAME: '頁面相同',
PAGEDIFF: '頁面不同',
DONTEXIST: '頁面不存在',
};
}
function replaceText(text) {
let insideLink = false;
let insideTemplate = false;
let newText = "";
for (let i = 0; i < text.length; i++) {
const char = text.charAt(i);
if (char === "[") {
insideLink = true;
newText += char;
} else if (char === "]") {
insideLink = false;
newText += char;
} else if (char === "{") {
insideTemplate = true;
newText += char;
} else if (char === "}") {
insideTemplate = false;
newText += char;
} else if (char === "(" && !insideLink && !insideTemplate) {
newText += "(";
} else if (char === ")" && !insideLink && !insideTemplate) {
newText += ")";
} else {
newText += char;
}
}
return newText;
}
function deleteBold(text) {
// 寻找第一个章节
const matchIndex = str.indexOf('\n==');
// 没找到首段,返回 -1,替换整个字符串;否则只替换首段之后的内容,保留首段
let newText = (matchIndex === -1 ? '' : str.substr(0, matchIndex));
// 返回首段 + 删除粗体过的其余内容
return newText + str.substr(matchIndex + 1).replace(/'''/g, '');
}
var callDialog = function (event) {
if (event && event.preventDefault) {
event.preventDefault();
}
$('#linktranslator').remove();
if (wikitextEditor.mode === 'visual') {
alert(LTUI.NoVE);
return;
}
// 針對VE進行Hack
wikitextEditor.keepSelection = true;
if (wikitextEditor.selectionText.length > 0) {
LTConf.SelectedTextOnly = 'checked';
} else {
LTConf.SelectedTextOnly = '';
}
$('<div id="linktranslator" title="' + LTUI.LinkTranslator + '">' +
'<label for="linktranslator-source-lang">' + LTUI.SourceLanguageCode + '</label> ' +
'<input id="linktranslator-source-lang" value="' + LTConf.SourceLanguageCode + '" type="text" /><br><br>' +
'<input type="checkbox" id="linktranslator-selected-text" ' + LTConf.SelectedTextOnly + '/> ' +
'<label for="linktranslator-selected-text">' + LTUI.SelectedTextOnly + '</label><br>' +
'<br>' + LTUI.IfFound + '<br><br>' +
'<input type="checkbox" id="linktranslator-comment-link" ' + LTConf.CommentOriginalLink + '/> ' +
'<label for="linktranslator-comment-link">' + LTUI.CommentOriginalLink + '</label><br>' +
'<input type="checkbox" id="linktranslator-keep-original2" ' + LTConf.KeepOriginalText2 + '/> ' +
'<label for="linktranslator-keep-original2">' + LTUI.KeepOriginalText2 + '</label><br>' +
'<br>' + LTUI.IfNotFound + '<br><br>' +
'<input type="checkbox" id="linktranslator-lang-link" ' + LTConf.UseLangLink + '/> ' +
'<label for="linktranslator-lang-link">' + LTUI.UseLangLink + '</label><br>' +
'<input type="checkbox" id="linktranslator-tsl" ' + LTConf.UseTsl + '/> ' +
'<label for="linktranslator-tsl">' + LTUI.UseTsl + '</label><br>' +
'<input type="checkbox" id="linktranslator-keep-original" ' + LTConf.KeepOriginalText + '/> ' +
'<label for="linktranslator-keep-original">' + LTUI.KeepOriginalText + '</label><br>' +
'<input type="checkbox" id="linktranslator-markwrongpage" ' + LTConf.MarkWrongPage + '/> ' +
'<label for="linktranslator-markwrongpage">' + LTUI.MarkWrongPage + '</label><br>'
).dialog({
modal: false,
close: function() {
currentJobid++;
},
width: 500,
buttons: [
{
text: LTUI.Translate,
click: function () {
$('#linktranslator').dialog('option', 'buttons', []);
processLinks();
}
}
]
});
};