User:Aizag/Tool/MOSNUM dates.js

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

-
-
//本工具改编自https://en.wikipedia.org/wiki/User:Ohconfucius/script/MOSNUM_dates.js
//功能为将accessdate、access-date、date和archivedate字段后标准英文dmy和mdy日期格式转换为ISO格式,适用于从英文维基翻译到中文维基的条目
//使用方法:将importScript('User:Ai6z83xl3g/Tool/MOSNUM dates.js');加入您的js页,进入源代码编辑页,左侧工具一栏会出现“日期->ISO”一行,点击即可
$.ajax('https://tools-static.wmflabs.org/meta/scripts/pathoschild.templatescript.js', { dataType:'script', cache:true }).then(function() {
	if( $.inArray(mw.config.get('wgAction'), ['edit', 'submit']) !== -1) {
		$.ajax('https://en.wikipedia.org/w/index.php?title=User:Ohconfucius/script/MOSNUM_utils.js&action=raw&ctype=text/javascript', { dataType:'script', cache:true }).then(function() {
			$(function() {
				var add = mw.util.addPortletLink;
				$( add('p-tb', '#', '日期->ISO', 't-allISO', '日期格式修正至ISO格式', '', '') ).click(ISO_dates_driver);
			});
		});
	}
});

function MOSNUM_edit_summary() {
	setoptions(minor='true');
	setreason('基于[[维基百科:格式手册/日期和数字|格式手册]]修正日期格式,由[[User:Ai6z83xl3g/Tool/MOSNUM dates.js|Javascript]]驱动', 'append');
	doaction('diff');
}

function ISO_dates() {
	ohc_regex(/(\|\s*(?:accessdate)\s*)=(\s*)@Day @Month,? @YYYY(?=[\s]*[|}])/gi, "$1=$2@YYYY-@MM-@DD");
	ohc_regex(/(\|\s*(?:accessdate)\s*)=(\s*)@Day @Month @YYYY(?=[\s]*[|}])/gi, "$1=$2@YYYY-@MM-@DD");
	ohc_regex(/(\|\s*(?:accessdate)\s*)=(\s*)@Month @Day,? @YYYY(?=[\s]*[|}])/gi, "$1=$2@YYYY-@MM-@DD");
	
	ohc_regex(/(\|\s*(?:access-date)\s*)=(\s*)@Day @Month,? @YYYY(?=[\s]*[|}])/gi, "$1=$2@YYYY-@MM-@DD");
	ohc_regex(/(\|\s*(?:access-date)\s*)=(\s*)@Day @Month @YYYY(?=[\s]*[|}])/gi, "$1=$2@YYYY-@MM-@DD");
	ohc_regex(/(\|\s*(?:access-date)\s*)=(\s*)@Month @Day,? @YYYY(?=[\s]*[|}])/gi, "$1=$2@YYYY-@MM-@DD");
	
	ohc_regex(/(\|\s*(?:date)\s*)=(\s*)@Day @Month,? @YYYY(?=[\s]*[|}])/gi, "$1=$2@YYYY-@MM-@DD");
	ohc_regex(/(\|\s*(?:date)\s*)=(\s*)@Day @Month @YYYY(?=[\s]*[|}])/gi, "$1=$2@YYYY-@MM-@DD");
	ohc_regex(/(\|\s*(?:date)\s*)=(\s*)@Month @Day,? @YYYY(?=[\s]*[|}])/gi, "$1=$2@YYYY-@MM-@DD");
	
	ohc_regex(/(\|\s*(?:archivedate)\s*)=(\s*)@Day @Month,? @YYYY(?=[\s]*[|}])/gi, "$1=$2@YYYY-@MM-@DD");
	ohc_regex(/(\|\s*(?:archivedate)\s*)=(\s*)@Day @Month @YYYY(?=[\s]*[|}])/gi, "$1=$2@YYYY-@MM-@DD");
	ohc_regex(/(\|\s*(?:archivedate)\s*)=(\s*)@Month @Day,? @YYYY(?=[\s]*[|}])/gi, "$1=$2@YYYY-@MM-@DD");
	
	//ohc_regex(/(\s*)@Month @Day,? @YYYY(\s*)/gi, "$1@YYYY-@MM-@DD$2");
}

function ISO_dates_driver(e) {
	e.preventDefault();
	ISO_dates();
	MOSNUM_edit_summary();
}