User:Vikarna/trans.js

/** * 本工具用于修正日期格式以及英文语言参数，请在使用前阅读User:Vozhuo/Tool/MOSNUM_dates的文档. 如工具出现问题，可以联系我. * 除主要选项外，侧栏还会出现一个正则表达式编辑器（Regex editor） */ mw.hook('editorapi.ready').add(function {    if (['wikitext', 'wikEd', 'wikitext2017', 'codemirror'].indexOf(wikitextEditor.mode) !== -1) {        $.ajax( '//tools-static.wmflabs.org/meta/scripts/pathoschild.templatescript.js', { dataType:'script', cache:true } ).done( function { $.when(               mw.loader.using( ['mediawiki.util'] ),                $.ajax('//zh.wikipedia.org/w/index.php?title=User:Vozhuo/Tool/MOSNUM_utils.js&action=raw&ctype=text/javascript', { dataType:'script', cache:true } ),               $.ready            ).done( function {                    var add = mw.util.addPortletLink;                    $('#t-enISO').remove;                    $('#t-zhISO').remove;                    $('#fixlang').remove;                    $('#dellang').remove;                    $( add('p-tb', '#', '英文日期->ISO', 't-enISO', '英文日期格式修正至ISO格式', , ) ).click(en_dates_driver);                    $( add('p-tb', '#', '中文日期->ISO', 't-zhISO', '中文日期格式修正至ISO格式', , ) ).click(zh_dates_driver);                    $( add('p-tb', '#', wgULS('修复语言参数', '修復語言參數'), 'fixlang', '修复参考资料语言标签', , ) ).click(fix_language_driver);                    $( add('p-tb', '#', wgULS('删除语言参数', '刪除語言參數'), 'dellang', '删除参考资料语言标签', , ) ).click(del_language_driver);            }); });   } }); mw.loader.load('https://zh.wikipedia.org/w/index.php?title=User:Vanished_user_1929210/js/EditorAPIs.js&action=raw&ctype=text/javascript'); //https://zh.wikipedia.org/wiki/User:Vanished_user_1929210/js/lib/EditorAPIs.js

var summary = { en_date:    wgULS('基于格式手册修正日期格式，由Javascript驱动', '基於格式手冊修正日期格式，由Javascript驅動'), zh_date:    wgULS('参考资料中文日期格式转ISO', '參考資料中文日期格式轉ISO'), fix_language: wgULS('修复英文语言参数', '修復英文語言參數'), del_language: wgULS('删除所有语言参数', '刪除所有語言參數'), }; var type; function check(type) { if (type == 'EN') { return summary.en_date; } else if (type == 'ZH') { return summary.zh_date; } else if (type == 'FIX') { return summary.fix_language; } else if(type == 'DEL') { return summary.del_language; } }

function edit_summary(type) { wikitextEditor.minorEdit = true; wikitextEditor.summary = check(type); wikitextEditor.showDiff; }

function en_dates { ohc_regex(/@Day @Month,? @YYYY/gi, "@YYYY-@MM-@DD"); ohc_regex(/@Month @Day,? @YYYY/gi, "@YYYY-@MM-@DD"); //删去可能多余的df字段 var text = wikitextEditor.text; text = text.replace(/\|\s*df\s*=\s*[\w-]*(?=[\s]*[|}])/gi, ''); wikitextEditor.text = text; }

function zh_dates { var text = wikitextEditor.text; text = text.replace(/(\|\s*(?:access|archive|)-?date\s*=\s*\d+)年(\d+)月(\d+)日(?=[\s]*[|}])/gi, function (m, p1, p2, p3) {   return p1 + '-'  + (Array(2).join(0) + p2).slice(-2) + '-' + (Array(2).join(0) + p3).slice(-2); //http://www.nowamagic.net/javascript/js_AddZeroFrontOfNumber.php }); wikitextEditor.text = text; }

function fix_language { var language_list = [ 'Chinese', 'Danish', 'Dutch', 'French', 'Finnish', 'German', 'Hungarian', 'Korean', 'Italian', 'Japanese', 'Polish', 'Portuguese', 'Russian', 'Spanish', 'Swedish', 'en-US', 'en-GB' ];	var language_codes = [ 'zh', 'da', 'nl', 'fr', 'fi', 'de', 'hu', 'ko', 'it', 'ja', 'pl', 'pt', 'ru', 'es', 'sv', 'en', 'en' ];   var text = wikitextEditor.text; text = text.replace(/(\|\s*language\s*=\s*)([\w-]*)(?=[\s]*[|}])/gi, function (m, p1, p2) {       for (var i = 0, len = language_list.length; i < len; i++)        {            if (p2.match(language_list[i])) {                p2 = language_codes[i];            }        }        return p1 + p2;    }); wikitextEditor.text = text; }

function delete_language { var text = wikitextEditor.text; text = text.replace(/(\|\s*language\s*=\s*)([\w-]*)(?=[\s]*[|}])/gi, '$1'); wikitextEditor.text = text; }

function en_dates_driver(e) { e.preventDefault; en_dates; edit_summary('EN'); }

function zh_dates_driver(e) { e.preventDefault; zh_dates; edit_summary('ZH'); }

function fix_language_driver(e) { e.preventDefault; fix_language; edit_summary('FIX'); }

function del_language_driver(e) { e.preventDefault; delete_language; edit_summary('DEL'); }