User:KillerChihuahua/monobook.js/dates.js

Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
function formatdates() {
    var txt = document.editform.wpTextbox1;

    // century
    txt.value = txt.value.replace(/\[\[(\d{1,2}(?:st|nd|rd|th)) (century)\]\]/gi, '$1 century');
    txt.value = txt.value.replace(/\[\[\d{1,2}(?:st|nd|rd|th) century\|(\d{1,2}(?:st|nd|rd|th))\]\]/gi, '$1');
    txt.value = txt.value.replace(/\[\[\d{1,2}(?:st|nd|rd|th) century\|(\d{1,2}(?:st|nd|rd|th)) (centuries)\]\]/gi, '$1 centuries');

    // decades
    txt.value = txt.value.replace(/\[\[(\d{1,4}s)\]\]/gi, '$1');

    // months
    txt.value = txt.value.replace(/\[\[(January|February|March|April|May|June|July|August|September|October|November|December)\]\]/gi, '$1');
    txt.value = txt.value.replace(/\[\[January\|(Jan)\]\]/gi, '$1');
    txt.value = txt.value.replace(/\[\[February\|(Feb)\]\]/gi, '$1');
    txt.value = txt.value.replace(/\[\[March\|(Mar)\]\]/gi, '$1');
    txt.value = txt.value.replace(/\[\[April\|(Apr)\]\]/gi, '$1');
    txt.value = txt.value.replace(/\[\[May\|(May)\]\]/gi, '$1');
    txt.value = txt.value.replace(/\[\[June\|(Jun)\]\]/gi, '$1');
    txt.value = txt.value.replace(/\[\[July\|(Jul)\]\]/gi, '$1');
    txt.value = txt.value.replace(/\[\[August\|(Aug)\]\]/gi, '$1');
    txt.value = txt.value.replace(/\[\[September\|(Sep)\]\]/gi, '$1');
    txt.value = txt.value.replace(/\[\[October\|(Oct)\]\]/gi, '$1');
    txt.value = txt.value.replace(/\[\[November\|(Nov)\]\]/gi, '$1');
    txt.value = txt.value.replace(/\[\[December\|(Dec)\]\]/gi, '$1');
    txt.value = txt.value.replace(/\[\[((?:January|February|March|April|May|June|July|August|September|October|November|December) \d{3,4})\]\]/gi, '$1');

    // days of the week
    txt.value = txt.value.replace(/\[\[(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday)\]\]/gi, '$1');
    txt.value = txt.value.replace(/\[\[(Mondays|Tuesdays|Wednesdays|Thursdays|Fridays|Saturdays|Sundays)\]\]/gi, '$1');
    txt.value = txt.value.replace(/\[\[(Mon|Tue|Tues|Wed|Thu|Thur|Thurs|Fri|Sat|Sun)\]\]/gi, '$1');
    txt.value = txt.value.replace(/\[\[Monday\|(Mondays)\]\]/gi, '$1');
    txt.value = txt.value.replace(/\[\[Tuesday\|(Tuesdays)\]\]/gi, '$1');
    txt.value = txt.value.replace(/\[\[Wednesday\|(Wednesdays)\]\]/gi, '$1');
    txt.value = txt.value.replace(/\[\[Thursday\|(Thursdays)\]\]/gi, '$1');
    txt.value = txt.value.replace(/\[\[Friday\|(Fridays)\]\]/gi, '$1');
    txt.value = txt.value.replace(/\[\[Saturday\|(Saturdays)\]\]/gi, '$1');
    txt.value = txt.value.replace(/\[\[Sunday\|(Sundays)\]\]/gi, '$1');

    // ranked days
    txt.value = txt.value.replace(/\[\[(\d{1,2}(?:st|nd|rd|th))\]\]/gi, '$1');


    // misconfigured
    txt.value = txt.value.replace(/\[\[((?:January|February|March|April|May|June|July|August|September|October|November|December) \d{1,2}(?:st|nd|rd|th))\]\]/gi, '$1');
    txt.value = txt.value.replace(/\[\[(?:January|February|March|April|May|June|July|August|September|October|November|December) \d{1,2}\|(\d{1,2})\]\]/gi, '$1');

    // year
    txt.value = txt.value.replace(/(\*)\[\[(\d{1,4})\]\]/gi, '$1$2');
    txt.value = txt.value.replace(/(\()\[\[(\d{1,4})\]\]/gi, '$1$2');
    txt.value = txt.value.replace(/(\|)\[\[(\d{1,4})\]\]/gi, '$1$2');

    txt.value = txt.value.replace(/\[\[(\d{1,4} (?:AD|BC|CE|BCE))\]\]/gi, '$1');
    txt.value = txt.value.replace(/\[\[\d{1,4} (?:AD|BC|CE|BCE)\|(\d{1,4})\]\]/gi, '$1');
    txt.value = txt.value.replace(/([^\]][^\]]{2})\[\[(\d{1,4})\]\]/gi, '$1$2');
    txt.value = txt.value.replace(/([^\]][^\]]{2})\[\[(\d{1,4})\]\]/gi, '$1$2');
    txt.value = txt.value.replace(/([^\]][^\]]{2})\[\[(\d{1,4})\]\]/gi, '$1$2');
    txt.value = txt.value.replace(/\[\[\d{1,4}\|(\d{1,2})\]\]/gi, '$1');
    txt.value = txt.value.replace(/\[\[\d{1,4}\|(\d{1,2})\]\]/gi, '$1');
    txt.value = txt.value.replace(/\[\[\d{1,4}\|(\d{1,2})\]\]/gi, '$1');



    // Add a tag to the summary box
    var txt = document.editform.wpSummary;
    var summary = "links as per MoS";
	if (txt.value.indexOf(summary) == -1) {
		if (txt.value.match(/[^\*\/\s][^\/\s]?\s*$/)) {
			txt.value += " | ";
		}
		txt.value += summary;
	}

    // Press the diff button to check it
    document.editform.wpDiff.click()
}

addOnloadHook(function () {
    if(document.forms.editform) {
        addLink('p-cactions', 'javascript:formatdates()', '1Jan2001', 'ca-datefixer', 'Fixes some date formatting', '', '');
    }
});