User:Plastikspork/datetools.js

// --- --- // // --- Credits  // // // These javascript tools were inspired by //     User:Lightmouse/monobook.js/script.js // // This script is intended to be complimentary to these scripts with very little // to no duplication of function. // -- Disclaimer -- // // // Use at your own risk and make sure you check the edit changes before you save // // Let me know User_Talk:Plastikspork if you find bugs!

// - Installing the Script // // // (1) Open/Create your USERNAME/monobook.js page, where USERNAME is your username. //    A quick way to get there is to go to your user page, then append //    '/monobook.js' to the end of the URL. // // (2) Put the following command on your monobook.js page: //         importScript('User:Plastikspork/datetools.js'); // // (3) Save the page and reload it by following the instructions at the top of your //    monobook.js page. For example, Ctrl+Shift+R in Firefox.

// --- Using the Script --- // // // (1) This is a collection of javascript functions which can be called from other //    scripts. // // Note: Some functions could run slowly on very large pages, but do //        always eventually complete in my experience. // --- --- //

// spork_yyyymmdd_to_mdy - // // Purpose: Changes/delinks yyyy-mm-dd to Month dd, yyyy if preceded by 'date =' // // Examples: 'date = 1990-12-20' -> 'date = December 12, 1990' //          'accessdate = 1990-12-20' -> 'accessdate = December 12, 1990' // // Notes: Currently there is an injunction against mass delinking of dates // function spork_yyyymmdd_to_mdy(str) { str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*)(?:\[\[)?([1-9][0-9]{3})(?:\]\]-\[\[|-)0?1-(0[1-9]|[1-3][0-9])(?:\]\])?/gi, '$1January $3, $2'); str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*)(?:\[\[)?([1-9][0-9]{3})(?:\]\]-\[\[|-)0?2-(0[1-9]|[1-3][0-9])(?:\]\])?/gi, '$1February $3, $2'); str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*)(?:\[\[)?([1-9][0-9]{3})(?:\]\]-\[\[|-)0?3-(0[1-9]|[1-3][0-9])(?:\]\])?/gi, '$1March $3, $2'); str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*)(?:\[\[)?([1-9][0-9]{3})(?:\]\]-\[\[|-)0?4-(0[1-9]|[1-3][0-9])(?:\]\])?/gi, '$1April $3, $2'); str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*)(?:\[\[)?([1-9][0-9]{3})(?:\]\]-\[\[|-)0?5-(0[1-9]|[1-3][0-9])(?:\]\])?/gi, '$1May $3, $2'); str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*)(?:\[\[)?([1-9][0-9]{3})(?:\]\]-\[\[|-)0?6-(0[1-9]|[1-3][0-9])(?:\]\])?/gi, '$1June $3, $2'); str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*)(?:\[\[)?([1-9][0-9]{3})(?:\]\]-\[\[|-)0?7-(0[1-9]|[1-3][0-9])(?:\]\])?/gi, '$1July $3, $2'); str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*)(?:\[\[)?([1-9][0-9]{3})(?:\]\]-\[\[|-)0?8-(0[1-9]|[1-3][0-9])(?:\]\])?/gi, '$1August $3, $2'); str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*)(?:\[\[)?([1-9][0-9]{3})(?:\]\]-\[\[|-)0?9-(0[1-9]|[1-3][0-9])(?:\]\])?/gi, '$1September $3, $2'); str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*)(?:\[\[)?([1-9][0-9]{3})(?:\]\]-\[\[|-)10-(0[1-9]|[1-3][0-9])(?:\]\])?/gi, '$1October $3, $2'); str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*)(?:\[\[)?([1-9][0-9]{3})(?:\]\]-\[\[|-)11-(0[1-9]|[1-3][0-9])(?:\]\])?/gi, '$1November $3, $2'); str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*)(?:\[\[)?([1-9][0-9]{3})(?:\]\]-\[\[|-)12-(0[1-9]|[1-3][0-9])(?:\]\])?/gi, '$1December $3, $2'); return str; }

// spork_yyyymmdd_to_dmy - // // Purpose: Changes/delinks yyyy-mm-dd to dd Month yyyy if preceded by 'date =' // // Examples: 'date = 1990-12-20' -> 'date = 12 December 1990' //          'accessdate = 1990-12-20' -> 'accessdate = 12 December 1990' // // Notes: Currently there is an injunction against mass delinking of dates // function spork_yyyymmdd_to_dmy(str) { str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*)(?:\[\[)?([1-9][0-9]{3})(?:\]\]-\[\[|-)0?1-(0[1-9]|[1-3][0-9])(?:\]\])?/gi, '$1$3 January $2'); str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*)(?:\[\[)?([1-9][0-9]{3})(?:\]\]-\[\[|-)0?2-(0[1-9]|[1-3][0-9])(?:\]\])?/gi, '$1$3 February $2'); str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*)(?:\[\[)?([1-9][0-9]{3})(?:\]\]-\[\[|-)0?3-(0[1-9]|[1-3][0-9])(?:\]\])?/gi, '$1$3 March $2'); str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*)(?:\[\[)?([1-9][0-9]{3})(?:\]\]-\[\[|-)0?4-(0[1-9]|[1-3][0-9])(?:\]\])?/gi, '$1$3 April $2'); str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*)(?:\[\[)?([1-9][0-9]{3})(?:\]\]-\[\[|-)0?5-(0[1-9]|[1-3][0-9])(?:\]\])?/gi, '$1$3 May $2'); str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*)(?:\[\[)?([1-9][0-9]{3})(?:\]\]-\[\[|-)0?6-(0[1-9]|[1-3][0-9])(?:\]\])?/gi, '$1$3 June $2'); str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*)(?:\[\[)?([1-9][0-9]{3})(?:\]\]-\[\[|-)0?7-(0[1-9]|[1-3][0-9])(?:\]\])?/gi, '$1$3 July $2'); str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*)(?:\[\[)?([1-9][0-9]{3})(?:\]\]-\[\[|-)0?8-(0[1-9]|[1-3][0-9])(?:\]\])?/gi, '$1$3 August $2'); str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*)(?:\[\[)?([1-9][0-9]{3})(?:\]\]-\[\[|-)0?9-(0[1-9]|[1-3][0-9])(?:\]\])?/gi, '$1$3 September $2'); str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*)(?:\[\[)?([1-9][0-9]{3})(?:\]\]-\[\[|-)10-(0[1-9]|[1-3][0-9])(?:\]\])?/gi, '$1$3 October $2'); str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*)(?:\[\[)?([1-9][0-9]{3})(?:\]\]-\[\[|-)11-(0[1-9]|[1-3][0-9])(?:\]\])?/gi, '$1$3 November $2'); str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*)(?:\[\[)?([1-9][0-9]{3})(?:\]\]-\[\[|-)12-(0[1-9]|[1-3][0-9])(?:\]\])?/gi, '$1$3 December $2'); return str; }

// --- spork_dmy_to_mdy --- // // Purpose: Changes/delinks DD Month YYYY to Month DD, YYYY if preceded by 'date =' // // Examples: 'accessdate = 12 December 1990' -> 'accessdate = December 12, 1990' //          'date = 12 December 1990' -> 'date = December 12, 1990' // // Notes: Currently there is an injunction against mass delinking of dates // function spork_dmy_to_mdy(str) { str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*)(?:\[\[)?0?([1-9]|[1-3][0-9])[ ,]+((?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)[a-z]*)(?:\]\])?[, ]+(?:\[\[)?([1-9][0-9][0-9][0-9])(?:\]\])?/gi, '$1$3 $2, $4'); str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*)(?:\[\[)?((?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)[a-z]*)[, ]+0?([1-9]|[1-3][0-9])(?:\]\])?[, ]+(?:\[\[)?([1-9][0-9][0-9][0-9])(?:\]\])?/gi, '$1$2 $3, $4'); return str; }

// --- spork_mdy_to_dmy --- // // Purpose: Changes/delinks Month DD, YYYY to DD Month YYYY if preceded by 'date =' // // Examples: 'accessdate = December 12, 1990' -> 'accessdate = 12 December 1990' //          'date = December 12, 1990' -> 'date = 12 December 1990' // // Notes: Currently there is an injunction against mass delinking of dates // function spork_mdy_to_dmy(str) { str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*)(?:\[\[)?((?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)[a-z]*)[, ]+0?([1-9]|[1-3][0-9])(?:\]\])?[, ]+(?:\[\[)?([1-9][0-9][0-9][0-9])(?:\]\])?/gi, '$1$3 $2 $4'); str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*)(?:\[\[)?0?([1-9]|[1-3][0-9])[, ]+((?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)[a-z]*)(?:\]\])?[, ]+(?:\[\[)?([1-9][0-9][0-9][0-9])(?:\]\])?/gi, '$1$2 $3 $4'); return str; }

// spork_dmy_to_yyyymmdd - // // Purpose: Changes/delinks dd Month yyyy to yyyy-mm-dd if preceded by 'date =' // // Examples: 'date = 12 December 1990' -> 'date = 1990-12-20' //          'accessdate = 12 December 1990' -> 'accessdate = 1990-12-20' // // Notes: Currently there is an injunction against mass delinking of dates // function spork_dmy_to_yyyymmdd(str){ str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*)(?:\[\[)?0?([1-9]|[1-3][0-9]) Jan[\.uary]*(?:\]\])?[, ]+(?:\[\[)?([1-9][0-9][0-9][0-9])(?:\]\])?/gi, '$1$3-01-$2'); str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*)(?:\[\[)?0?([1-9]|[1-3][0-9]) Feb[\.uary]*(?:\]\])?[, ]+(?:\[\[)?([1-9][0-9][0-9][0-9])(?:\]\])?/gi, '$1$3-02-$2'); str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*)(?:\[\[)?0?([1-9]|[1-3][0-9]) Mar[\.ch]*(?:\]\])?[, ]+(?:\[\[)?([1-9][0-9][0-9][0-9])(?:\]\])?/gi, '$1$3-03-$2'); str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*)(?:\[\[)?0?([1-9]|[1-3][0-9]) Apr[\.il]*(?:\]\])?[, ]+(?:\[\[)?([1-9][0-9][0-9][0-9])(?:\]\])?/gi, '$1$3-04-$2'); str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*)(?:\[\[)?0?([1-9]|[1-3][0-9]) May(?:\]\])?[, ]+(?:\[\[)?([1-9][0-9][0-9][0-9])(?:\]\])?/gi, '$1$3-05-$2'); str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*)(?:\[\[)?0?([1-9]|[1-3][0-9]) Jun[\.e]*(?:\]\])?[, ]+(?:\[\[)?([1-9][0-9][0-9][0-9])(?:\]\])?/gi, '$1$3-06-$2'); str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*)(?:\[\[)?0?([1-9]|[1-3][0-9]) Jul[\.y]*(?:\]\])?[, ]+(?:\[\[)?([1-9][0-9][0-9][0-9])(?:\]\])?/gi, '$1$3-07-$2'); str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*)(?:\[\[)?0?([1-9]|[1-3][0-9]) Aug[\.ust]*(?:\]\])?[, ]+(?:\[\[)?([1-9][0-9][0-9][0-9])(?:\]\])?/gi, '$1$3-08-$2'); str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*)(?:\[\[)?0?([1-9]|[1-3][0-9]) Sep[\.tembr]*(?:\]\])?[, ]+(?:\[\[)?([1-9][0-9][0-9][0-9])(?:\]\])?/gi, '$1$3-09-$2'); str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*)(?:\[\[)?0?([1-9]|[1-3][0-9]) Oct[\.ober]*(?:\]\])?[, ]+(?:\[\[)?([1-9][0-9][0-9][0-9])(?:\]\])?/gi, '$1$3-10-$2'); str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*)(?:\[\[)?0?([1-9]|[1-3][0-9]) Nov[\.embr]*(?:\]\])?[, ]+(?:\[\[)?([1-9][0-9][0-9][0-9])(?:\]\])?/gi, '$1$3-11-$2'); str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*)(?:\[\[)?0?([1-9]|[1-3][0-9]) Dec[\.embr]*(?:\]\])?[, ]+(?:\[\[)?([1-9][0-9][0-9][0-9])(?:\]\])?/gi, '$1$3-12-$2');

str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*[1-9][0-9][0-9][0-9])-([1-9]-)/gi, '$1-0$2'); str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*[1-9][0-9][0-9][0-9]-[0-9][0-9])-([1-9])([^0-9])/gi, '$1-0$2$3'); return str; }

// spork_mdy_to_yyyymmdd - // // Purpose: Changes/delinks Month dd, yyyy to yyyy-mm-dd if preceded by 'date =' // // Examples: 'date = December 12, 1990' -> 'date = 1990-12-20' //          'accessdate = December 12, 1990' -> 'accessdate = 1990-12-20' // // Notes: Currently there is an injunction against mass delinking of dates // function spork_mdy_to_yyyymmdd(str){ str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*)(?:\[\[)?Jan[\.uary]* 0?([1-9]|[1-3][0-9])(?:\]\])?[, ]+(?:\[\[)?([1-9][0-9][0-9][0-9])(?:\]\])?/gi, '$1$3-01-$2'); str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*)(?:\[\[)?Feb[\.uary]* 0?([1-9]|[1-3][0-9])(?:\]\])?[, ]+(?:\[\[)?([1-9][0-9][0-9][0-9])(?:\]\])?/gi, '$1$3-02-$2'); str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*)(?:\[\[)?Mar[\.ch]* 0?([1-9]|[1-3][0-9])(?:\]\])?[, ]+(?:\[\[)?([1-9][0-9][0-9][0-9])(?:\]\])?/gi, '$1$3-03-$2'); str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*)(?:\[\[)?Apr[\.il]* 0?([1-9]|[1-3][0-9])(?:\]\])?[, ]+(?:\[\[)?([1-9][0-9][0-9][0-9])(?:\]\])?/gi, '$1$3-04-$2'); str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*)(?:\[\[)?May 0?([1-9]|[1-3][0-9])(?:\]\])?[, ]+(?:\[\[)?([1-9][0-9][0-9][0-9])(?:\]\])?/gi, '$1$3-05-$2'); str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*)(?:\[\[)?Jun[\.e]* 0?([1-9]|[1-3][0-9])(?:\]\])?[, ]+(?:\[\[)?([1-9][0-9][0-9][0-9])(?:\]\])?/gi, '$1$3-06-$2'); str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*)(?:\[\[)?Jul[\.y]* 0?([1-9]|[1-3][0-9])(?:\]\])?[, ]+(?:\[\[)?([1-9][0-9][0-9][0-9])(?:\]\])?/gi, '$1$3-07-$2'); str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*)(?:\[\[)?Aug[\.ust]* 0?([1-9]|[1-3][0-9])(?:\]\])?[, ]+(?:\[\[)?([1-9][0-9][0-9][0-9])(?:\]\])?/gi, '$1$3-08-$2'); str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*)(?:\[\[)?Sep[\.tembr]* 0?([1-9]|[1-3][0-9])(?:\]\])?[, ]+(?:\[\[)?([1-9][0-9][0-9][0-9])(?:\]\])?/gi, '$1$3-09-$2'); str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*)(?:\[\[)?Oct[\.ober]* 0?([1-9]|[1-3][0-9])(?:\]\])?[, ]+(?:\[\[)?([1-9][0-9][0-9][0-9])(?:\]\])?/gi, '$1$3-10-$2'); str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*)(?:\[\[)?Nov[\.embr]* 0?([1-9]|[1-3][0-9])(?:\]\])?[, ]+(?:\[\[)?([1-9][0-9][0-9][0-9])(?:\]\])?/gi, '$1$3-11-$2'); str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*)(?:\[\[)?Dec[\.embr]* 0?([1-9]|[1-3][0-9])(?:\]\])?[, ]+(?:\[\[)?([1-9][0-9][0-9][0-9])(?:\]\])?/gi, '$1$3-12-$2');

str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*[1-9][0-9][0-9][0-9])-([1-9]-)/gi, '$1-0$2'); str=str.replace(/(\|[ ]*(?:date|accessdate|archivedate)[ ]*=[ ]*[1-9][0-9][0-9][0-9]-[0-9][0-9])-([1-9])([^0-9])/gi, '$1-0$2$3'); return str; }