User:Jaguar/script/UKSpelling.js

// MAMBO NUMBER FIVE ^_^ // This script converts US English into UK spelling. //BEWARE THIS IS A MODIFIED WORK IN PROGRESS // PLEASE READ THE DOCUMENTATION at User:Jaguar/UKSpelling /************* mw.loader.load('//meta.wikimedia.org/w/index.php?title=User:Pathoschild/Scripts/Regex_menu_framework.js&action=raw&ctype=text/javascript'); /* menu links */ // In the function below, add more lines like "regexTool('link text','function_name')" to add // links to the sidebar menu. The function name is the function defined in rfmscripts below. function rmflinks { regexTool('Custom regex','custom'); // a default tool which performs regex input in a dynamic form regexTool('Edit my regexes ↗','function opennew(url) { window.open(url); }; opennew(mw.config.get('wgServer') + mw.config.get('wgScript') + "?title=User:" + wgUserName + "/EngvarB.js&action=edit");'); regexTool('• Protect words','ohc_protect_ENGVAR'); regexTool('• Flip IMP','Ohc_flip_IMP'); regexTool('• Flip SI','Ohc_flip_SI'); regexTool('• Universal British','SetEnglish("A")'); regexTool('• BRITISH (Oxford)','SetEnglish("Ox")'); regexTool('• CANADIAN','SetEnglish("C")'); //Fix formatting of links in the sidebar var r = document.getElementById('p-regex'); if (r){ r.className += ' portal'; var d = r.getElementsByTagName('div'); if (d[0]) d[0].className += ' pBody body'; } } /* scripts */ // Below, define the functions linked to from rmflinks above. These functions can use any JavaScript, // but there is a set of simplified tools documented at // http://meta.wikimedia.org/wiki/User:Pathoschild/Script:Regex_menu_framework. /** **/ /// PROTECTION BY STRING SUBSTITUTION var linkmap=[]; function ohc_protect_ENGVAR {   // protects categories, templates, link pipings, quotes, etc // the sensitive part is stored and replaced with a unique identifier, // which is later replaced with the stored part. var protect_function = function(s, begin, replace, end) { linkmap.push(replace); return begin + "⍌"+(linkmap.length-1)+"⍍" + end; }; //   regex(/(pre)(string)(post)/gi, protect_function); //template regex(/(.*?)(<\/blockquote>)/gi, protect_function); regex(/(]*?>)([^<>]*)(<\/ref>)/gi, protect_function); regex(/(]*)(\/>)/gi, protect_function); regex(/(\{[\w ]{0,12}(?:quot[^\|]{1,7}\s?|sic|(?:not a |)typo|as written)\|)([^\}]+)(\})/gi, protect_function); regex(/([\s\(]["“])([^"“”\n]*)(["”])/gi, protect_function); //double quotes   regex(/((?:Category|Image):)([^|\]]*)([\|\]])/gi, protect_function); //cats, images    regex(/((?:image\d?|image_skyline|image[ _]location\d?|image[ _](?:map|name)|img|pic)\s*=)([^\|\}]*)([\|\}])/gi, protect_function); //images within templates infoboxes etc    regex(/(.)(cite encyclopedia\s*\|)(.)/gi, protect_function);    regex(/(\|)(\s*colors(?:_label|)\s*)(=)/gi, protect_function);    regex(/(\|)(\s*analog\s*)(=)/gi, protect_function);    regex(/((?:url)\s*=)([^\|\}]*)([\|\}])/gi, protect_function); //urls within templates infoboxes etc    regex(/(\[(?:https?:|ftp:))([^\]]*)(\])/gi, protect_function);    regex(/(\[(?:https?:|ftp:))([^\s\]]*)([\s\]])/gi, protect_function);    regex(/(\[\[)([^\|\]]*)(\|)/gi, protect_function); //pipings    regex(/(.)(Back in the U.S.S.R.)(.)/gi, protect_function); //title of work regex(/(.)(Born in the U.S.A.)(.)/gi, protect_function); //title of work regex(/(\{(?:See ?also|Main))(\|[^\}]*)(\})/gi, protect_function); //see also and main templates regex(/(\{\{(?:external|wide )image\s?\|)([^\}]+)(\})/gi, protect_function); regex(/(\{\{(?:harvnb|wikisource)\|)([^\}]+)(\})/gi, protect_function); regex(/(\{\{)((?:NYT|WSJ)topic\|[^\}]*)(\}\})/gi, protect_function); regex(/(\{\{\w*)([^\|=\[\]]*)(\}\})/gi, protect_function); //templates regex(/(\{Infobox )((?:[\w ]*)organization)(\s+)/gi, protect_function); regex(/(\|\s*)(cleanup|color|coordinates\w*)([ ]*=)/gi, protect_function); //parameters within infoboxes regex(/(\|(?:[^=\|\{\}]*))(cleanup|encyclopa?edia|enroll?ment|honors|lockup\w{1,4}|organi[sz]ation|catalog\snumber)(\s*=)/g, protect_function); regex(/(\|\s*)(encyclopedia|\w*colors)(\s?=)/gi, protect_function); regex(/(\|\s*)(local[ _]authority)(\s?=)/gi, protect_function); regex(/(\|\s*)([Ss]hip[ _](?:armou?r|honou?rs))([ ]*?\=)/g, protect_function); regex(/(\|\s*title\s?=)([^|\]]*)(\|)/gi, protect_function); regex(/(.)(solid gray)(.)/gi, protect_function); //protect from hyphenation regex(/(.)(\breed(?:|s)[^aeiou]|[Rr]eegan)(.)/g, protect_function); //protect from function re_zwords regex(/(.)((?:enterpri|promi|surpri|treati)(?:se[drs]?|ing))(.)/gi, protect_function); regex(/(.)((?: ant)(?:ic|idote|imon|ipath|iq))(.)/g, protect_function); regex(/(.)((?:(?:mercury|nobel)pri|imagesi|picsi)(?:ze))(.)/g, protect_function); } function ohc_unprotect_ENGVAR {   //removes protection put in place by function ohc_protect_fmt (all cats, templates etc.) regex(/[♫]/g, ''); regex(/⍌([0-9]+)⍍/g, function(x, n) {       var res = linkmap[n];        res = res.replace(/⍌([0-9]+)⍍/g, function(x, n) { var res = linkmap[n]; res = res.replace(/⍌([0-9]+)⍍/g, function(x, n) {               var res = linkmap[n];                res = res.replace(/⍌([0-9]+)⍍/g, function(x, n) { return linkmap[n]; });               return res;            }); return res; });       return res;    }); } /** **/ function Ohc_plain_english{ //per https://www.gov.uk/designprinciples/styleguide //redundancies regex(/B\.B\.C\./g, 'BBC'); regex(/U\.S\.A\./g, 'USA'); regex(/U\.S\.S\.R\./g, 'USSR'); regex(/U\.(K|S)\./g, 'U$1'); regex(/E\.U\./g, 'EU'); regex(/(fill )out/gi, '$1in'); regex(/in order (to )/g, '$1'); regex(/In order t(o )/g, 'T$1'); //hyphenation regex(/(co)(o(?:per|rdin)at(e\b|ing|ion))/g, '$1-$2'); regex(/\b(re)(e\w[aeiou]\w{4,})/gi, '$1-$2'); regex(/\b(over|under)(r\w{4,})/gi, '$1-$2'); regex(/\b(vice) (president|chairman|chancellor|minister)/gi, "$1-$2"); //capitalisation //rem geographical regions - too many false positives regex(/(local )authority/g, '$1council'); regex(/w(estern European Union)/g, 'W$1'); regex(/(New )s(outh Wales)/g, '$1S$2'); } function Ohc_ENGVARSimple{ var table = { 'aging':	'$1ageing', 'aluminum':	'$1aluminium', 'adrenalin(\\b)':	'$1adrenaline$2', 'annex(\\b)':	'$1annexe$2', 'artifact':	'$1artefact', '(ana|breatha|cata|hydro|para)lyz(e|ing|is)':	'$1$2lys$3', 'bestsell':	'$1best-sell', 'diarrhea':	'$1diarrhoea', '(de|of)fense':	'$1$2fence', '(licen|practi)c(ing|ed)':	'$1$2s$3', 'furor(\\b)':	'$1furore$2', '(light-|dark-|\\b)gray':	'$1$2grey', 'guerilla':	'$1guerilla', 'jewelry':	'$1jewellery', 'maneuver(ab|ed|ing)':	'$1manoeuvr$2', 'maneuver':	'$1manoeuvre', 'louve(red|ring)':	'$1louv$2', 'louver':	'$1louvre', 'ped(iatric|ophil)':	'$1paed$2', 'encyclopedi(a|c)':	'$1encyclopaedi$2', 'skeptic':	'$1sceptic', 'mollusk':	'$1mollusc', 'vapor(s?\\b)':	'$1vapour$2', 'licorice':	'$1liquorice', //composite words '(break|drop|clean|line|lock|pick)(out|up)':	'$1$2-$3', //oe/ae words 'gyneco':	'$1gynaeco', 'hemo(globin|ly|phil|rr)':	'$1haemo$2', 'orthopedic':	'$1orthopaedic', 'archeo':	'$1archaeo', 'paleonto':	'$1palaeonto', 'enology':	'$1oenology', 'esophag':	'$1oesophag', 'estrogen':	'$1oestrogen', '(an|)esthe(sia|tic|tist)':	'$1$2aesthe$3', 'anesthesiologist':	'$1anaesthetist', 'homeopath':	'$1homoeopath', //		'medieval(\\b)':	'$1mediaeval$2', 'omelet(\\b)':	'$1omelette$2', 'rigor(\\b)':	'$1rigour$2', '(an|leuk|septic|tox)emi(a|c)':	'$1$2aemi$3', //'f' words 'sulfur':	'$1sulphur', 'anymore':	'$1any more', 'specialty':	'$1speciality', // non-redundant e		'(lik|liv|rat|sal|siz|shak)(able)':	'$1$2e$3', //'~our' words '(arm|clam|glam|harb|neighb|rum|savi?)or(ed|ful|ing|less|ly|s|\\b)':	'$1$2our$3', '(arm|sav)or(ies|y|s|\\b)':	'$1$2our$3', '(cand|od)or((?:ful|less)(?:ly|)|\\b)':	'$1$2our$3', 'neighborhood':	'$1neighbourhood', 'behavior(al|s|\\b)':	'$1behaviour$2', 'favor(abl[ey]|ed|i[\\w]*|s|\\b)':	'$1favour$2', 'honor(abl[ey]|ed|ing|s|\\b)':	'$1honour$2', '(endeav|lab)or(e[dr]|ing|s|\\W)':	'$1$2our$3', 'mol(d|t)(ed|ing|s|\\W)':	'$1moul$2$3', //'~re~' words '(calib|fib|goit|lust|mit|nit|och|reconnoit|sab|saltpet|spect|theat|tit)er(s?\\W)':	'$1$2re$3', '(centi|kilo|micro|milli|nano|-|\\d\\s)meter':	'$1$2metre', '(centi|milli|deci|pico|hecto|\\b)liter(s?\\b)':	'$1$2litre$3', '(dema|peda|mono|syna)gog(s?\\W)':	'$1$2gogue$3', //		'(\\W[a-z]{3,12}[^s\\b])iz(e[drs]?|ation(s|al|)|ing)':	'$1$2is$3', //'~l' words where the 'l' doubles as past and present participle '((?:\\w{3,9}[-–—]|)(?:fu|pan))el(e[dr]|ist|ing)':	'$1$2ell$3', '(bev|jew|lev|mod|rev|trav)el(e[dr]|ing)':	'$1$2ell$3', '([a-z]{2,8}[^eglz ])el(e[dr]|est|ing)(\\b)':	'$1$2ell$3$4', //added 'z' to avoid changing of "embezzled" '(app|di|enthr|equ|initi|journ|riv|sign|tot)al(e[dr]|ing)':	'$1$2all$3' };	for (var word in table) { var txt=""; try { var re = new RegExp('([ \\|\\[\\*])' + word, 'g'); regex(re, table[word]); }		catch(err) { txt="There was an error on function Ohc_ENGVARSimple, when changing '"+ word + "' => '"+ table[word] +"'.\n\n"; txt+="Error: " + err.message + "\n\n"; txt+="Click OK to continue.\n\n"; alert(txt); }	}	var table = { //'~our' words '([ \\|\\[\\*])(flav|hum)or(ed|ful|fully|ings?|less|lessly|s?\\W)':	'$1$2our$3', '([ \\|\\[\\*])color(e[dr]|ful|fully|ings?|less|lessly)':	'$1colour$2', '([ \\|\\[\\*])colors([^\\W\\s]|[\\s]*[^=])':	'$1colours$2', //'~re~' words '([^\\w\\d\\-\\/=])(calib|fib|goit|lust|mit|nit|reconnoit|sab|saltpet|spect|theat|tit)er(ed|ing)':	'$1$2r$3', '( [\\w\\D]*\\-)(col|flav|hum)ored':	'$1$2oured', '([^\\w\\d\\-\\/=])(cent|epicent|recent)er(ed|ing)':	'$1$2r$3', '([^\\w\\d\\-\\/=])(cent|epicent|recent)ers':	'$1$2res', '([^\\w\\d\\-\\/])(ana|cata|dia|epi|homo|mono|pro)log(ed|ing)':	'$1$2logu$3', '([^\\w\\d\\-\\/])(ana|cata|dia|epi|homo|mono|pro)log(s?\\b)':	'$1$2logue$3', //'~l' words where the 'l' doubles as past and present participle '([ \\|\\[])(counc[ie])l(e[dr]|ing|ors?)(\\b)':	'$1$2ll$3$4', '\\b([a-z]*)ll(ful|ment)':	'$1l$2', '(movie theat(er|re))':	'cinema', '([ \\|\\[\\*])airplane':	'$1aeroplane', '([ \\|\\[\\*])\\b[Mm]om(my|)\\b':	'$1mother' };	for (var word in table) { var txt=""; try { var re = new RegExp(word, 'g'); regex(re, table[word]); }		catch(err) { txt="There was an error on function Ohc_ENGVARSimple, when changing '"+ word + "' => '"+ table[word] +"'.\n\n"; txt+="Error: " + err.message + "\n\n"; txt+="Click OK to continue.\n\n"; alert(txt); }	}	//remove US spelling from undefined undefined template output regex(/(\{\{convert\|[^\}]*)\|(?:sp|spell)[ ]*=[ ]*us/gi, '$1'); regex(/(\{\{(?:in|ft|yd|[mck]?m)[23]?[ ]+to[ ]+[^\}]*)\|(?:sp|spell)[ ]*=[ ]*(?:American|us)/gi, '$1'); regex(/(\{\{(?:pd|pop[ ]+density[ ])+(?:km|mi)2[^\}]*)\|(?:sp|spell)[ ]*=[ ]*(?:American|us)/gi, '$1'); //remove ambiguous pound sign; rem incidental intervening space regex(/₤ ?(\d)/g, '£$1'); regex(/rigour mortis/g, 'rigor mortis'); //reconvert special cases } function Ohc_ENGVARCSimple{ var table = { 'ageing':	'$1aging', 'aluminium':	'$1aluminum', 'adrenalin(\\b)':	'$1adrenaline$2', 'annex(\\b)':	'$1annexe$2', '(ana|breatha|cata|hydro|para)lyz(e|ing|is)':	'$1$2lys$3', '(de|of)fense':	'$1$2fence', '(licen|practi)c(ing|ed)':	'$1$2s$3', 'furor(\\b)':	'$1furore$2', '(light-|dark-|\\b)gray':	'$1$2grey', 'guerilla':	'$1guerilla', 'maneuver(ab|ed|ing)':	'$1manoeuvr$2', 'maneuver':	'$1manoeuvre', 'louve(red|ring)':	'$1louv$2', 'louver':	'$1louvre', 'encyclopaedi(a|c)':	'$1encyclopedi$2', 'skeptic':	'$1sceptic', 'mollusk':	'$1mollusc', 'vapor(s?\\b)':	'$1vapour$2', 'liquorice':	'$1licorice', //composite words //		'onstage':	'$1on-stage', '(break|drop|clean|line|lock|pick)(out|up)':	'$1$2-$3', //oe/ae words 'anaesthesiologist':	'$1anesthetist', '(an|)aesthe(sia|tic|tist)':	'$1$2esthe$3', 'archaeo':	'$1archeo', 'diarrhoea':	'$1diarrhea', 'foetus':	'$1fetus', 'gyneco':	'$1gynaeco', 'haemo(globin|ly|phil|rr)':	'$1hemo$2', 'orthopaedic':	'$1orthopedic', 'oenology':	'$1enology', 'oesophag':	'$1esophag', 'oestrogen':	'$1estrogen', 'homoeopath':	'$1homeopath', 'omelet(\\b)':	'$1omelette$2', 'paed(iatric|ophil)':	'$1ped$2', 'palaeonto':	'$1paleonto', 'rigor(\\b)':	'$1rigour$2', '(an|leuk|septic|tox)aemi(a|c)':	'$1$2emi$3', //'f' words 'sulfur':	'$1sulphur', 'anymore':	'$1any more', 'speciality':	'$1specialty', // non-redundant e		'(lik|liv|rat|sal|siz|shak)(able)':	'$1$2e$3', //'~our' words '(arm|clam|glam|harb|neighb|rum|savi?)or(ed|ful|ing|less|ly|s|\\b)':	'$1$2our$3', '(arm|sav)or(ies|y|s|\\b)':	'$1$2our$3', '(cand|od)or((?:ful|less)(?:ly|)|\\b)':	'$1$2our$3', 'neighborhood':	'$1neighbourhood', 'behavior(al|s|\\b)':	'$1behaviour$2', 'favor(abl[ey]|ed|i[\\w]*|s|\\b)':	'$1favour$2', 'honor(abl[ey]|ed|ing|s|\\b)':	'$1honour$2', '(endeav|lab)or(e[dr]|ing|s|\\W)':	'$1$2our$3', 'mol(d|t)(ed|ing|s|\\W)':	'$1moul$2$3', //'~re~' words '(calib|fib|goit|lust|mit|nit|och|reconnoit|sab|saltpet|spect|theat|tit)er(s?\\W)':	'$1$2re$3', '(centi|kilo|micro|milli|nano|-|\\d\\s)meter':	'$1$2metre', '(centi|milli|deci|pico|hecto|\\b)liter(s?\\b)':	'$1$2litre$3', '(dema|peda|mono|syna)gog(s?\\W)':	'$1$2gogue$3', //'~l' words where the 'l' doubles as past and present participle '((?:\\w{3,9}[-–—]|)(?:fu|pan))el(e[dr]|ist|ing)':	'$1$2ell$3', '(bev|jew|lev|mod|rev|trav)el(e[dr]|ing)':	'$1$2ell$3', '([a-z]{2,8}[^eglz ])el(e[dr]|est|ing)(\\b)':	'$1$2ell$3$4', '(app|di|enthr|equ|initi|journ|riv|sign|tot)al(e[dr]|ing)':	'$1$2all$3' };	for (var word in table) { var txt=""; try { var re = new RegExp('(\\b)' + word, 'g'); regex(re, table[word]); }		catch(err) { txt="There was an error on function Ohc_ENGVAR-CSimple, when changing '"+ word + "' => '"+ table[word] +"'.\n\n"; txt+="Error: " + err.message + "\n\n"; txt+="Click OK to continue.\n\n"; alert(txt); }	}	var table = { //'~our' words '\\b(flav|hum)or(ed|ful|fully|ings?|less|lessly|s?\\W)':	'$1our$2', '\\bcolor(e[dr]|ful|fully|ings?|less|lessly)':	'colour$1', '([ \\|\\[\\*])colors([^\\W\\s]|[\\s]*[^=])':	'$1colours$2', //'~re~' words '([^\\w\\d\\-\\/=])(calib|fib|goit|lust|mit|nit|reconnoit|sab|saltpet|spect|theat|tit)er(ed|ing)':	'$1$2r$3', '( [\\w\\D]*\\-)(col|flav|hum)ored':	'$1$2oured', '([^\\w\\d\\-\\/=])(cent|epicent|recent)er(ed|ing)':	'$1$2r$3', '([^\\w\\d\\-\\/=])(cent|epicent|recent)ers':	'$1$2res', '([^\\w\\d\\-\\/])(ana|cata|dia|epi|homo|mono|pro)log(ed|ing)':	'$1$2logu$3', '([^\\w\\d\\-\\/])(ana|cata|dia|epi|homo|mono|pro)log(s?\\b)':	'$1$2logue$3', //'~l' words where the 'l' doubles as past and present participle '\\b(counc[ie])l(e[dr]|ing|ors?)\\b':	'$1ll$2', //		'(movie theat(er|re))':	'cinema', '\\b([a-z]*)ll(ful|ment)':	'$1l$2' };	for (var word in table) { var txt=""; try { var re = new RegExp(word, 'g'); regex(re, table[word]); }		catch(err) { txt="There was an error on function Ohc_ENGVAR-CSimple, when changing '"+ word + "' => '"+ table[word] +"'.\n\n"; txt+="Error: " + err.message + "\n\n"; txt+="Click OK to continue.\n\n"; alert(txt); }	}	//remove US spelling from undefined undefined template output regex(/(\{\{convert\|[^\}]*)\|(?:sp|spell)[ ]*=[ ]*us/gi, '$1'); regex(/(\{\{(?:in|ft|yd|[mck]?m)[23]?[ ]+to[ ]+[^\}]*)\|(?:sp|spell)[ ]*=[ ]*(?:American|us)/gi, '$1'); regex(/(\{\{(?:pd|pop[ ]+density)[ ]+(?:km|mi)2[^\}]*)\|(?:sp|spell)[ ]*=[ ]*(?:American|us)/gi, '$1'); regex(/rigour mortis/g, 'rigor mortis'); } function SetEnglish(v) { switch (v) { case 'Ox': ohc_protect_ENGVAR; Ohc_ENGVARSimple; re_zwords; Ohc_ENGVARXedit_summary; break; case 'A': ohc_protect_ENGVAR; Ohc_ENGVARSimple; zwords; Ohc_ENGVARAedit_summary; break; case 'B': ohc_protect_ENGVAR; Ohc_ENGVARSimple; zwords; Ohc_ENGVARBedit_summary; break; case 'C': ohc_protect_ENGVAR; Ohc_ENGVARCSimple; re_zwords; Ohc_ENGVARCedit_summary; break; case 'P': alert('Feature not implemented'); break; }	Ohc_plain_english ohc_unprotect_ENGVAR; ohc_retask_pipes; insert_Engvar(v); doaction('diff'); //	Ohc_ENGVARedit_summary; } function Simpleplus { Ohc_ENGVARSimple; zwords; ohc_unprotect_ENGVAR; insert_Engvar('B'); Ohc_ENGVARedit_summary; } /** **/ function ohc_retask_pipes{ regex(/([^\w\d\-\.]\[\[)(?:(?:[a-z]+? |)[a-z]+?[^s ]i[sz]ation)\|((?:[a-z]+? |)[a-z]{3,12}[^s ]i[sz](?:e[drs]?|ations?|abl[ey]|ing))/g, '$1$2'); //	regex(/(empha|synthe)siz(e|ing)/g, '$1sis$2'); } function zwords{ regex(/([^\w\d\-\.][a-z]{3,12}[^s ])iz(e[drs]?|ations?|abl[ey]|ing)(\W)/g, '$1is$2$3'); regex(/(empha)siz(e|ing)/g, '$1sis$2'); regex(/(synthe)siz(e[ds]|ing)/g, '$1sis$2'); } function re_zwords{ //converts 's-words' and 'ph-words' into Oxford 'z-words' and 'f-words' regex(/([^\w\d\-\.\/])(ar|de[mv]|improv|parad|(?:com|)pr[eo][cm]|rev|surm|telev)is(e|ing)/g, '$1$2♫is$3'); regex(/([^\w\d\-\.\/][a-z]{5,12})is(ations?)(\W)/g, '$1iz$2$3'); regex(/([^\w\d\-\.\/][a-z]{0,12}(?:[aeiou][^aeiosuw]|ph|rd|thes))is(e[drs]?|ing)(\W)/g, '$1iz$2$3'); //'f' words regex(/sulphur(\W)/g, 'sulfur$1'); } function Ohc_flip_IMP{ // measurements and perception //	regex(/\[\[(foobar)(s|)\]\]/gi, '$1$2'); //Template:undefined undefined //	regex(/(\{\{convert)(\s*\|)/gi, '$1/flip$2'); //rem linking within convert template (area)	//needs resolving regex(/(\{\{convert\|[\d\.,]+?\|(?:(?:sq|cu|)(?:[mck]?m)(?:2|3|))(?:\|(?:sq|cu|)(?:in|ft|yd|mi)(?:2|3|))?(\|\d)?(\|(?:sp|adj|abbr|lk|sigfig|sortable)=[^\|\}]*)*)(?=\})/gi, '$1|disp=flip'); //rem linking within convert template (area) regex(/(\{\{convert\|[\d\.,]+?\|tonnes?(?:\|tons?)?(\|\d)?(?:\|(?:sp|adj|abbr|lk|sigfig|sortable)=[^\|\}]*)*)(?=\})/gi, '$1|disp=flip'); //rem linking within convert template regex(/(\{\{convert\|[\d\.,]+?\|(?:(?:sq|)(?:k?m)(?:2|3|)|hectare))(\|(?:sp|adj|abbr|lk|sigfig|sortable)=[^\|\}]*)*?(?=\})/gi, '$1$2|disp=flip'); //putting metres and hectares behind regex(/(\{\{convert\|[\d\.,]+?\|(?:hectares?|ha)(?:\|\d)?(?:\|(?:sp|adj|abbr|lk|sigfig|sortable)=[^\|\}]*)*)(?=\})/gi, '$1|disp=flip'); //flip hectares regex(/(\{\{convert\|[\d\.,]+?\|(?:kmh|km\/h)(?:\|\d)?(?:\|(?:sp|adj|abbr|lk|sigfig|sortable)=[^\|\}]*)*)(?=\})/gi, '$1|disp=flip'); //flip kmh regex(/(\{\{convert\|[\d\.,]+?\|(?:to|by|x)(?:\|[\d\.,]+?\|(?:[mck]?m))(\|(?:sp|adj|abbr|lk|sigfig|sortable)=[^\|\}]*)*)(?=\})/gi, '$1|disp=flip'); //rem linking within convert template (input ranges only) regex(/(\{\{convert\|[\d\.,]+?\|nmi)(2|)(\|mi\2 km\2|\|km\2 mi\2|)(?=[|}])/gi, '$1$2|mi$2 km$2'); //putting miles first in nautical mile conversion regex(/(\{\{convert\|[\d\.,]+?\|(?:kg|°?F))(\|(?:sp|adj|abbr|lk|sigfig|sortable)=[^\|\}]+?)*(?=\})/gi, '$1$2|disp=flip'); //putting pounds and °C first //	regex(/(\{\{(?:in|ft|mi|[mck]?m)[23]?\sto\s(?:in|ft|mi|[mck]?m)[23]?[^\}]*?)\|wiki=(?:yes|no)/gi, '$1'); ////manipulating "|disp=flip" parameter where already "flipped" regex(/(\{\{convert\|[\d\.,]+?\|\w{1,4}(?:\|\w{1,4}|)?(?:\|\d)?(?:\|(?:sp|adj|abbr|lk|sigfig|sortable)=[^\|\}]*)*)(\|disp=flip)(\|(?:sp|adj|abbr|lk|sigfig|sortable)=[^\|\}]*)+(?=\})/gi, '$1$3$2'); //reordering flipping parameter within convert template (last parameter) regex(/(\{\{convert\|[\d\.,]+?\|(?:(?:sq|cu|)(?:in|ft|yd|mi|acre)(?:2|3|))(?:\|(?:sq|cu|)(?:[mck]?m|ha)(?:2|3|))?(\|\d)?(?:\|(?:sp|adj|abbr|lk|sigfig|sortable)=[^\|\}]*)*)\|disp=flip(?=\})/gi, '$1$2'); //rem flipping within convert template (Imperial, sq and cubed) regex(/(\{\{convert\|[\d\.,]+?\|(?:mi|miles?|mph)(?:\|kph|km\/h|)?(\|\d)?(?:\|(?:sp|adj|abbr|lk|sigfig|sortable)=[^\|\}]*)*)\|disp=flip(?=\})/gi, '$1$2'); //rem flipping within convert template (Imperial, sq and cubed) } function Ohc_flip_SI{ // measurements and perception //	regex(/\[\[(foobar)(s|)\]\]/gi, '$1$2'); //Template:undefined undefined //	regex(/(\{\{convert)(\s*\|)/gi, '$1/flip$2'); //rem linking within convert template (area)	//needs resolving regex(/(\{\{convert\|[\d\.,]+?\|(?:(?:sq|cu|)(?:in|ft|yd|mi)(?:2|3|))(?:\|(?:sq|cu|)(?:[mck]?m)(?:2|3|))?(\|\d)?(\|(?:sp|adj|abbr|lk|sigfig|sortable)=[^\|\}]*)*)(?=\})/gi, '$1|disp=flip'); //rem linking within convert template (area) regex(/(\{\{convert\|[\d\.,]+?\|tonnes?(?:\|tons?)?(\|\d)?(?:\|(?:sp|adj|abbr|lk|sigfig|sortable)=[^\|\}]*)*)(?=\})/gi, '$1|disp=flip'); //rem linking within convert template regex(/(\{\{convert\|[\d\.,]+?\|(?:(?:sq|)mi(?:2|3|)|acre))(\|(?:sp|adj|abbr|lk|sigfig|sortable)=[^\|\}]*)*?(?=\})/gi, '$1$2|disp=flip'); //putting metres and hectares behind //	regex(/(\{\{convert\|[\d\.,]+?\|(?:hectares?|ha)(?:\|\d)?(?:\|(?:sp|adj|abbr|lk|sigfig|sortable)=[^\|\}]*)*)(?=\})/gi, '$1|disp=flip'); //flip hectares //	regex(/(\{\{convert\|[\d\.,]+?\|mp[gh](?:\|\d)?(?:\|(?:sp|adj|abbr|lk|sigfig|sortable)=[^\|\}]*)*)(?=\})/gi, '$1|disp=flip'); //flip kmh regex(/(\{\{convert\|[\d\.,]+?\|(?:to|by|x)(?:\|[\d\.,]+?\|(?:yd|f(?:oo|)t|in))(\|(?:sp|adj|abbr|lk|sigfig|sortable)=[^\|\}]*)*)(?=\})/gi, '$1|disp=flip'); //rem linking within convert template (input ranges only) regex(/(\{\{convert\|[\d\.,]+?\|nmi)(2|)(\|mi\2 km\2|\|km\2 mi\2|)(?=[|}])/gi, '$1$2|km$2 mi$2'); //putting miles first in nautical mile conversion regex(/(\{\{convert\|[\d\.,]+?\|(?:lb|oz|°?F))(\|(?:sp|adj|abbr|lk|sigfig|sortable)=[^\|\}]+?)*(?=\})/gi, '$1$2|disp=flip'); //putting pounds and °C first //	regex(/(\{\{(?:in|ft|mi|[mck]?m)[23]?\sto\s(?:in|ft|mi|[mck]?m)[23]?[^\}]*?)\|wiki=(?:yes|no)/gi, '$1'); ////manipulating "|disp=flip" parameter where already "flipped" regex(/(\{\{convert\|[\d\.,]+?\|\w{1,4}(?:\|\w{1,4}|)?(?:\|\d)?(?:\|(?:sp|adj|abbr|lk|sigfig|sortable)=[^\|\}]*)*)(\|disp=flip)(\|(?:sp|adj|abbr|lk|sigfig|sortable)=[^\|\}]*)+(?=\})/gi, '$1$3$2'); //reordering flipping parameter within convert template (last parameter) regex(/(\{\{convert\|[\d\.,]+?\|(?:(?:sq|cu|)(?:[mck]?m|ha)(?:2|3|))(?:\|(?:sq|cu|)(?:in|ft|yd|mi|acre)(?:2|3|))?(\|\d)?(?:\|(?:sp|adj|abbr|lk|sigfig|sortable)=[^\|\}]*)*)\|disp=flip(?=\})/gi, '$1$2'); //rem flipping within convert template (Imperial, sq and cubed) regex(/(\{\{convert\|[\d\.,]+?(?:\|kph|km\/h|)(?:\|mi|miles?|mph)?(\|\d)?(?:\|(?:sp|adj|abbr|lk|sigfig|sortable)=[^\|\}]*)*)\|disp=flip(?=\})/gi, '$1$2'); //rem flipping within convert template (Imperial, sq and cubed) } function insert_Engvar(v){ // Add a template to the article identifying English variant var box = document.editform.wpTextbox1; var txt = box.value; // Build a string with "Month YYYY" var dateobj=new Date; var month=new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"); var datestr= month[dateobj.getMonth] + ' ' + dateobj.getFullYear; // Matches Use Australian English or EngvarA var reA = new RegExp('', 'gi'); var reB = new RegExp('', 'gi'); // Matches Use British (Oxford) English or EngvarOx var reOx = new RegExp('', 'gi'); // Matches Use Canadian English or EngvarC var reC = new RegExp('', 'gi'); var reU = new RegExp('', 'gi'); switch (v) { case 'A': // Replace existing variants with Australian txt = txt.replace( reOx, ''); txt = txt.replace( reB, ''); txt = txt.replace( reC, ''); txt = txt.replace( reU, ''); // Prepend Australian template if not already tagged if( txt.search(reA) == -1 ) { txt = '\r\n' + txt; }          break; case 'Ox': // Replace with British (Oxford) txt = txt.replace( reA, ''); txt = txt.replace( reB, ''); txt = txt.replace( reC, ''); txt = txt.replace( reU, ''); // Prepend British (Oxford) template if not already tagged if( txt.search(reOx) == -1 ) { txt = '\r\n' + txt; }          break; case 'B': // Replace with British txt = txt.replace( reA, ''); txt = txt.replace( reOx, ''); txt = txt.replace( reC, ''); txt = txt.replace( reU, ''); // Prepend British template if not already tagged if( txt.search(reB) == -1 ) { txt = '\r\n' + txt; }          break; case 'C': // Replace with Canadian txt = txt.replace( reA, ''); txt = txt.replace( reB, ''); txt = txt.replace( reOx, ''); txt = txt.replace( reU, ''); // Prepend Canadian template if not already tagged if( txt.search(reC) == -1 ) { txt = '\r\n' + txt; }          break; }       box.value = txt; } function Ohc_ENGVARAedit_summary{ //Add a tag to the summary box setoptions(minor='true'); //removed ",watch='false'" in response to user notification 13 Nov. 2010 setreason('spelling per WP:ENGVAR, 'append'); //	doaction('diff'); } function Ohc_ENGVARBedit_summary{ //Add a tag to the summary box setoptions(minor='true'); //removed ",watch='false'" in response to user notification 13 Nov. 2010 setreason('all British spelling by script', 'append'); //	doaction('diff'); } function Ohc_ENGVARCedit_summary{ //Add a tag to the summary box setoptions(minor='true'); //removed ",watch='false'" in response to user notification 13 Nov. 2010 setreason('all Canadian spelling by script', 'append'); //	doaction('diff'); } function Ohc_ENGVARXedit_summary{ //Add a tag to the summary box setoptions(minor='true'); //removed ",watch='false'" in response to user notification 13 Nov. 2010 setreason('all to Oxford spelling by script', 'append'); //	doaction('diff'); }
 * Regex menu framework
 * by m:user:Pathoschild 
 * - adds a sidebar menu of user-defined scripts.