User:Ohconfucius/test/Sources.js

//

// *********************************************************************************************

//This is a test (non-production) script, and may have untested errors. Please exercise due care should you decide to use it.

// *********************************************************************************************

/**

* TemplateScript adds configurable templates and scripts to the sidebar, and adds an example regex editor.

* @see https://meta.wikimedia.org/wiki/TemplateScript

* @update-token File:pathoschild/templatescript.js

*/

mw.loader.load('//tools-static.wmflabs.org/meta/scripts/pathoschild.templatescript.js');

importScript("User:Ohconfucius/script/MOSNUM_utils.js"); //needed for "'Accessed' ->

importScript("User:Ohconfucius/test/Sources_subscript1.js"); //convert domain names into article names

importScript("User:Ohconfucius/test/Sources_subscript2.js"); //Correctly casing titles and apply or rem italicisation

importScript("User:Ohconfucius/test/Sources_subscript3.js"); //link-fixing, dabbing etc

importScript("User:Ohconfucius/script/foreigndates.js"); //link-fixing, dabbing etc

function Ohc_add_ref_tags() {

var txt=document.editform.wpTextbox1;

regex(/([^>\*\s])\s?(\[https?:\/\/[^\s\[\]]*\])(?![ ]*[<\-]+)/gi, '$1$2');

}

function Ohc_fill_pub_with_domain() {

var txt=document.editform.wpTextbox1;

//test

regex(/\s?((?:[^<>]*\|\s*url\s*=|\[?)https?:\/\/((?:\w+\.)*\w+(?:\.(?:com?|org|net|gov|ac|)(?:\.[a-z]{2}|)))\/[^<>{}]+\|publisher=)(?=}}<\/ref>)/gi, "$1$2"); //capture domain name to add to publisher

regex(/(\|\s*(?:publisher|website)\s*\=\s*)w{3}\.(\w+\.(?:com?|org|net|gov|ac|)(?:\.[a-z]{2}|))(?=\s*[|}])/gi, '$1$2');

regex(/(\|\s*publisher=)\s?\|\s?via\s*\=\s*(\w+)(?=\s*[|}])/gi, '$1$2');

// regex(/\|\s?via\s*\=\s*/gi, '|work=');

regex(/\s?[-–]\s?(?:The |)(\w+\.(?:com?|org|net|gov|ac|)(?:\.[a-z]{2}|))\s?(\|\s*publisher\s*\=\s*)\1(?=}})/gi, '$2$1');

regex(/\s?[-–]\s?([^|]+)\s?(\|\s*publisher\s*\=\s*)(The )\1(?=}})/gi, '$2$3$1');

regex(/\|\s?first\s*\=[^|]*\|\s?last\s*\=(?:Editor|Group|Staff|Reporter|Writer)\s*(?=\|)/gi, '');

regex(/({{Navbox deaths}})(\n)/gi, '==References==$2{{Reflist}}$2$1$2');

regex(/(==References==\n{{Reflist}}\n)\n?\1/gi, '$1');

}

function Ohc_remove_urls() {

var txt=document.editform.wpTextbox1;

// warning-tagging template:Primary source inline

regex(/(]*>[^<>]*\|[ ]*url ?= ?https?:\/\/(?:(?:www\.|mobile\.|)(?:blogger|blogspot|facebook|sites\.google|instagram|tiktok|twitter|wordpress)\.com|www\.formspring\.me)\/[^<>{]*<\/ref>)(?:\{\{Primary source inline\}\}|)/gi, '$1{{Primary source inline}}');

regex(/(]*>[^<>]*\|[ ]*url ?= ?https?:\/\/(?:(?:www\.|)(?:myspace|findagrave)\.com)\/[^<>{]*<\/ref>)(?:\{\{Primary source inline\}\}|)/gi, '$1{{Primary source inline}}');

regex(/(\s*https?:\/\/(?:(?:www\.|)(?:blogger|blogspot|facebook|sites\.google|findagrave|instagram|myspace|tiktok|twitter|wordpress)\.com)\/[^\s\]<]*<\/ref>)(?:\{\{Primary source inline\}\}|)/gi, '$1{{Primary source inline}}');

regex(/(\s*\[https?:\/\/(?:(?:www\.|)(?:blogger|blogspot|facebook|sites\.google|findagrave|instagram|myspace|tiktok|twitter|wordpress)\.com)\/[^\s\]]*[ ]+[\w\d][^\]]*\]<\/ref>)(?:\{\{Primary source inline\}\}|)/gi, '$1{{Primary source inline}}');

// removing http links within publisher/journal/work fields

//

// regex(/(\|\s*(?:author|publisher|work) *= *)(?:https?:\/{2}|)(?:w{3}\.|)(\w+(?:\.(?:com?|net|org|gov|\w{2})|)(?:\.\w{2}|))(?:\/[^|}]*|)(?=\s*[\]|}])/gi, '$1$2'); //returns domain name

regex(/(\|\s*title\s*\=)\s*https?:\/{2}(?:w{3}\.|)\w+\.com(?=\s?(?:[=|{]|\}\}))/gi, '$1 ');

regex(/(\|\s*title\s*\=)\s*https?:\/{2}[^|\s]+(?=\s?(?:[=|{]|\}\}))/gi, '$1 ');

regex(/(\|\s*title\s*\=)\s*Archived copy(?=\s?(?:[=|{]|\}\}))/gi, '$1 ');

regex(/\s?/gi, ' '); //rem error introduced by earlier version of this script; entirely strip title field

regex(/(\|\s*(?:author(?:link\d?|)|chapter|journal|magazine|newspaper|publisher|title|work|via)\s*\=\s*)https?:\/{2}(?:w{3}\.|)(?=\w)/gi, '$1'); //removes http:// and optionally www.

regex(/(\|\s*(?:author(?:link\d?|)|chapter|journal|magazine|newspaper|publisher|title|work|via)\s*\=\s*)(?:w{3}\.)(?=\w)/gi, '$1'); //removes www.

regex(/(\|\s*(?:author(?:link\d?|)|chapter|journal|magazine|newspaper|publisher|title|work|via)\s*\=\s*)(\w+(?:\.(?:com?|net|org|gov|\w{2}))(?:\.\w{2}|))(?:\/[^|}]*|)(?=\s*[\]|}])/gi, '$1$2'); //returns domain name

regex(/(>{{cit[^}]+\|\s?website\s*\=\s*)https?:\/{2}(?:w{3}\.|)(?=\w)/gi, '$1'); //leave only domain name

regex(/(>{{cit[^}]+\|\s?website\s*\=\s*)(?:w{3}\.)(?=\w)/gi, '$1'); //leave only domain name

// removing hyperlinks within publisher/journal/website/work fields

regex(/(\|\s*(?:chapter|journal|magazine|newspaper|publisher|title|work|via)\s*\=\s*)\[https?:\/\/[^\s\]]*\s([\w][^\]]*)\]/gi, '$1$2'); //leave only linked text

regex(/({{cit[^}]+\|\s?website\s*\=\s*)\[https?:\/\/[^\s\]]*\s([\w][^\]]*)\]/gi, '$1$2'); //citation templates: rem url whilst leaving only linked text within |website=

regex(/(\|\s*title\s*=\s*)(?:\w+(?:\.(?:com?|net|org|gov|\w{2}))(?:\.\w{2}|))(?:\/[^|}]+)(?:\/[^|}]+)(?:\/[^|}]+)(?:\/[^|}]+)\/([^|}]+)\/?(?=\s*[\]|}])/gi, '$1$2'); //returns terminal part of url

regex(/(\|\s*title\s*=\s*)(?:\w+(?:\.(?:com?|net|org|gov|\w{2}))(?:\.\w{2}|))(?:\/[^|}]+)(?:\/[^|}]+)(?:\/[^|}]+)\/([^|}]+)\/?(?=\s*[\]|}])/gi, '$1$2'); //returns terminal part of url

regex(/(\|\s*title\s*=\s*)(?:\w+(?:\.(?:com?|net|org|gov|\w{2}))(?:\.\w{2}|))(?:\/[^|}]+)(?:\/[^|}]+)\/([^|}]+)\/?(?=\s*[\]|}])/gi, '$1$2'); //returns terminal part of url

regex(/(\|\s*title\s*=\s*)(?:\w+(?:\.(?:com?|net|org|gov|\w{2}))(?:\.\w{2}|))(?:\/[^|}]+)\/([^|}]+)\/?(?=\s*[\]|}])/gi, '$1$2'); //returns terminal part of url

regex(/(\|\s*title\s*=\s*)(?:\w+(?:\.(?:com?|net|org|gov|\w{2}))(?:\.\w{2}|))\/([^|}]+)\/?(?=\s*[\]|}])/gi, '$1$2'); //returns terminal part of url

regex(/(\|\s*author(?:link\d?|)\s*\=\s*)\[https?:\/\/[^\s\]]*\s([\w][^\]]*)\]/gi, '$1$2');

regex(/(\|\s*author(?:link\d?|)\s*\=\s*)(?:https?:\/\/|)www\.[\w][^|}]*(?=[|}])/gi, '$1'); //rem outright (not a WL)

// removing references to other WP articles and 'external' WP links

regex(/]*>[^<>]*\|[ ]*url ?= ?https?:\/\/\w{2}\.wikipedia\.org\/w[^<>]*<\/ref>/gi, '{{cn}}');

regex(/\s*https?:\/\/\w{2}\.wikipedia\.org\/wiki\/[^\s\]<]*<\/ref>/gi, '{{cn}}');

regex(/\s*\[https?:\/\/\w{2}\.wikipedia\.org\/w[^\s\]]*[ ]+[\w\d][^\]]*\]<\/ref>/gi, '{{cn}}');

regex(/]|)>[^<>]*\|\s*url[ ]*=[ ]*https?:\/\/\w{2}\.wikipedia\.org\/w[^\s\|\{\}<]*[^<>]*<\/ref>/gi, '{{cn}}');

regex(/\[https?:\/\/\w{2}\.wikipedia\.org\/w[^\s\]]*[ ]+([\w][^\]]*)\]/gi, ' $1');

//deprecated sources

regex(/]*>[^<>]*\|[ ]*url ?= ?https?:\/\/(?:(?:\w+\.|)((?:the|)epochtimes|ntdtv)\.com)\/[^<>{]*<\/ref>/gi, '');

regex(/]*>[^<>]*\|[ ]*url ?= ?https?:\/\/(?:(?:\w+\.|)(thesun|dailymail)\.co\.uk)\/[^<>{]*<\/ref>/gi, '');

regex(/(\|\s*url\s*\=\s*|\[)(https?:[^|{}#\s]+)(?:#[A-Za-z0-9\.]{12,13}|\?CMP=fb_gu)(?=[\s\[\]|{}<>])/gi, '$1$2'); //rem link tracking

regex(/(\|\s*url\s*\=\s*)(https?:[^|{}#\s]+\.html?)\?[^|}]{1,5}(?=[\s\[\]|{}<>])/gi, '$1$2'); //rem link tracking

regex(/(\|\s*url\s*\=\s*|\[)(https?:\/\/books\.google\.[^\/]+\/books\?id=\w{12}&pg=PA\d{1,3})&dq[^\s|}]+(?=\s?[|}])/gi, '$1$2'); //rem browser optimisation

}

function Ohc_sources_prep() {

var txt=document.editform.wpTextbox1;

// removing artefacts within fields

regex(/(\|\s*author\s*\=\s*)(?:by |)(?:[^|]+staff|(?:staff |)(?:reporter|writer)s?|)[\s\n]*(?=[|}])/gi, '');

regex(/(\|\s*author\s*\=\s*)([A-Z][a-z]*(?: [A-Z][a-z]*)*) (?:(?:wire |)staff|(?:staff |)(?:reporter|writer)s?)[\s\n]*(?=[|}])/gi, '$1$2');

regex(/\|[ ]*last=(Reporter|staff)[ ]*\|[ ]*first=[^|\{\}]*(?=[\|{}])/gi, '');

regex(/\|[ ]*(?:first|last)=(?:staff |)(?:reporter|writer)[ ]*(?=[\|{}])/gi, '');

regex(/\|[ ]*first= ?staff ?\|[ ]*last=(?:reporter|writer)[ ]*(?=[\|{}])/gi, '');

regex(/\|[ ]*first= ?The ?\|[ ]*last=[^\|{}]*(?=[\|{}])/gi, '');

regex(/(\|\s*access-?date\s*\=\s*)(?:accessed|retrieved)(?: by| on|):?[ ]*(\d)/gi, '$1$2');

regex(/(\|\s*access-?date\s*\=\s*\d{4}\s?)(?=[|}])/gi, '');

regex(/(\|\s*work\s*\=\s*)(?:article|interview|review) ?(?=[|}])/gi, '$1');

regex(/(\|\s*volume\s*\=\s*)vol(?:ume|\.?)[ ]*(\d)/gi, '$1$2');

regex(/(\|\s*pages?\s*\=\s*)(?:pages?|p[gp]?\.?)[ ]*(\d)/gi, '$1$2');

regex(/ [-–] (?:每日明報 daily news|東方日報)/gi, '');

regex(/(\.\.\. |)\{\{!\}\} 立場(報道|新聞)/gi, '');

regex(/(\|\s*title\s*\=\s*)Login ?(?=[|}])/gi, '$1'); //creating deliberate error (blank title) per Trappist

regex(/(\|\s*)(?:publisher|website|work)=You ?tube(?:\.com|)(?=\s*[|}])/gi, '$1via=YouTube');

regex(/(\|\s*)(?:publisher|website|work)=(Amazon)(?:\.com|)(?:\.\w{2}|)(?=\s*[|}])/gi, '$1via=$2');

regex(/(\|\s*)(?:publisher|website|work)=(Vimeo)(?:\.com|)(?=\s*[|}])/gi, '$1via=$2');

regex(/(\|\s*)(?:publisher|website|work)=(Newspapers\.com)(?=\s*[|}])/gi, '$1via=$2');

regex(/(\|\s*publisher=)\|\s?via\s*\=\s*(\w+)(?=\s*[|}])/gi, '$1$2');

regex(/(?:-[ ]*Google Books[ ]*(?:\|[^}]*|)|)\|\s?publisher\s*\=\s*(Google Books)(?=[\s\.]*[|}])/g, '|via=$1');

// regex(/(\|\s*)(?:publisher|website|work)=books\.google(?:\.com?|.co\.uk|)(?=\s*[|}])/gi, '|via=Google Books');

// regex(/\|\s?(?:publisher|website|work)=(British Newspaper Archive|Google Books|Project Gutenberg|Proquest|Scribd|web(?:\.archive\|citation)(?:\.org|))(?=\s*[|}])/gi, '|via=$1');

//Remove COinS corrupting templates from CS1 citations

regex(/(\|\s*(?:authors?|first\d?|last\d?|publisher|work)\s*\=\s*(?:[^{}|]*|)){{(?:Sm|Aut|SC|Small[- ]caps|Sm?caps)\|([^{}|]*)}}(?=(?:[^{}|]*|)[|}])/gi, '$1');

regex(/(\|\s*)\w+\=(url\s*\=\s*https?:\/\/)(?=[|}])/gi, '$1$2'); //common cs1 error

regex(/(\|\s*url\s*\=)(www\.)(?=[|}])/gi, '$1http//$2'); //common cs1 error

regex(/(\|\s*date\s*=\s*)(?:not? |non-|un)date[ds]?\s*(?=[|}])/gi, '$1n.d.'); //common cs1 error

regex(/(\|\s*dead-?url=no?)(?=\s*[|}])/gi, '|url-status=dead'); //common cs1 error (deprecated parameter)

// regex(/\{\{wikinews ?(|2|cat(?:egory)?|has|par2?|portal|table|-inline)(\|[^\}]+|)\}\}\s*/gi, '');

regex(/(\*[ ]*|)\[\[n:[^\]\|]*\]\][\r\n]*/gi, '');

// regex(/\*[ ]*\{\{(?:Facebook|Find a Grave|Myspace)\|([^}]*)\}\}[\n\r\s]*/gi, ''); //disabled 19 Sept 2015 per Batty's request

//citation template fixes

// regex(/(\|\s*)published\s?=/gi, '$1publisher='); //disabled 12/5/21 – false positive in book infobox

// rem copyright assertion

regex(/(\|\s*publisher\s*\=\s*)(?:\[\[copyright(?:\|©|)\]\])\s?/gi, '$1');

regex(/(\|\s*publisher\s*\=\s*)(?:©|copyright)\s?/gi, '$1');

regex(/(\|\s*title\s*\=\s*[^|}]+?)[-‒–—―]\s+([^|}]+?)(\|\s*(?:publisher|work)\s*\=\s*\2)/gi, '$1$3');

regex(/(\|\s*title\s*\=\s*([^|}]+?))[-‒–—―]\s+([^|}]+?\|\s?(?:publisher|work)\s*\=\s*\2)/gi, '$1$3');

// misused 'date' parameter

regex(/(\{\{\s?cit[ae][^}]+)\|\s?date(\s?=\s?[12]\d{3}\s?[|}])/gi, '$1|year$2');

// rem toggles and redundant quote marks

regex(/(\|\s*(?:agency|author|newspaper|work|journal|publisher|title)\s*\=\s*)\'\'([^|}]+)\'\'(?=\s*[\}\|])/gi, '$1$2'); //without link

regex(/(\|\s*(?:agency|author|newspaper|work|journal|publisher|title)\s*\=\s*)\'\'(\[\[(?:[^\|]+\||)[^\|\]]+\]\])\'\'(?=\s*[\}\|])/gi, '$1$2'); //with link

regex(/(\|\s*title\s*\=\s*)\''([^\|\{\}]+)\''/gi, '$1$2'); //rem ' in titles

regex(/(\|\s*publisher\s*\=\s*)\(([^\|\{\}]+)\)/gi, '$1$2'); //rem parenthetical publishers

regex(/(\|\s*publisher\s*\=\s*)\"([^\|\{\}]+)\"/gi, '$1$2'); //rem quote marks around publishers

// reordering 'work' and 'publisher' (first run - see second run in cleanup function)

regex(/(\|\s*publisher\s*\=\s*(?:\[\^<{}\*\]\]|[^{}\|\}<>]*))(\s?\|[^}<>]*|)(\|\s*(?: journal|newspaper|magazine|periodical|website|work)\s*\=\s*(?:\[\^<{}\*\]\]|[^{}\|\}<>]*))(?=[\s\.]*[|}])/g, '$3$1$2');

regex(/(\|\s*website\s*\=\s*(?:\[\^<{}\*\]\]|[^{}\|\}<>]*))(\s?\|[^}<>]*|)(\|\s*(?: journal|newspaper|magazine|periodical|work)\s*\=\s*(?:\[\^<{}\*\]\]|[^{}\|\}<>]*))(?=[\s\.]*[|}])/g, '$3$1$2');

/// removing identical/similar entries in 'work' and 'publisher', and in 'work' and 'website' (different default vs [post] cleanup rules)

regex(/\|\s?work\s*\=\s*([^=|}\[<>]*)(\|[^}<>]*|)\|\s?(?:publisher|website)\s*\=\s*(?:\1|\[\[\1\]\])\.?(?=\s*[|}])/g, '|publisher=$1$2'); //unlinked work

regex(/\|\s?work\s*\=\s*\[\[([^<|\]]*)\]\](\|[^}<>]*|)\|\s?(?:publisher|website)\s*\=\s*(?:\1|\[\[\1\]\])\.?(?=\s*[|}])/g, '|publisher=$1$2'); //unpiped work

regex(/\|\s?work\s*\=\s*(\[\[(?:[^<|\]]*)\|([^}<>]*)\]\])(\|[^}<>]*|)\|\s?(?:publisher|website)\s*\=\s*(\1|\2)\.?(?=\s*[|}])/g, '|publisher=$1$3'); //piped work

regex(/\|\s?publisher\s*\=\s*([^=|}\[<>]*)(\|[^}<>]*|)\|\s?publisher\s*\=\s*(?:\1|\[\[\1\]\])\.?(?=\s*[|}])/g, '|publisher=$1$2'); //unlinked work

regex(/\|\s?publisher\s*\=\s*\[\[([^<|\]]*)\]\](\|[^}<>]*|)\|\s?publisher\s*\=\s*(?:\1|\[\[\1\]\])\.?(?=\s*[|}])/g, '|publisher=$1$2'); //unpiped work

regex(/\|\s?publisher\s*\=\s*(\[\[(?:[^<|\]]*)\|([^}<>]*)\]\])(\|[^}<>]*|)\|\s?publisher\s*\=\s*(\1|\2)\.?(?=\s*[|}])/g, '|publisher=$1$2'); //piped work

// remove redundant parentheses and templates from dm and md dates (equivalents also exists in Mosnum script)

regex(/(=[ ]*)\(([^()|{}])\)/gi, '$1$2');

// rem corporate designation

regex(/(\|\s*(?:author|publisher|work)\s*\=\s*[^\[|}]{1,40}),? (?:Inc|LL[CP]|Ltd|Limited|PLC|SA|(?:Snd\. |)Berhad)\.?(?=[ ]*\|\})/gi, '$1');

// correcting yahoo! corporate designation

regex(/(\|\s*(?:publisher|work)\s*\=\s*Yahoo)(?: |)(Finance|Green|Kids|Music|News|)(?=[ ]*\|\})/gi, '$1! $2');

// rem unnecessary quote marks

regex(/(\|\s*title\s*\=\s*)["“]([^\|]+)["”](?=\s?[|}])/gi, '$1$2');

regex(/(\|\s*title\s*\=\s*)['‘]([^\|'’]+)['’](?=\s?[|}])/gi, '$1$2');

// repl double 'in-title' quote marks with single quotes

regex(/(\|\s*title\s*\=\s*[\w ]* )["“]((?:\w[\w]* )+(?:\w[\w]*))["”]([^\|]+|)(?=\s?[|}])/gi, '$1\'$2\'$3');

// adjust for possibly incorrectly input title

regex(/(\|\s*title\s*\=\s*)([^\|\}<>]*)(\s?\|[^}<>]*|)\|\s?(publisher|work)\s*\=\s*(?:\1|\[\[\1\]\])(?=\s*[|}])/g, '$1 |$4=$2$3'); //creating deliberate error (blank title) per Trappist

// rem misplaced punctuation

regex(/(]*>[^<]+?[\]\.\},;–]\s*\'\'[\w-]*(?: [\w-]*){0,3})(\.com|)([;,\.])(\'\')(?=[^<]*?<\/ref>)/gi, '$1$2$4$3');

regex(/([\w]+)\.(['"]\])[ ]/gi, '$1$2. '); //LQ for titles

// removing blank or redundant parameters

regex(/(?:\|[ ]*(?:agency|arxiv|asin|at|author(-?link|-mask|-name-separator|-separator|\d|\d-link|link\d?|)|bibcode|chapter|chapter-url|coauthors?|contribution(?:-url|)|date|deadurl|display-authors|doi|doi-inactive|doibroken|edition|(?:editor|translator)(?:-first|-last|-link|\d|\d-first|\d-last|\d-link)|(?:first|last)\d?|format|id|is[bs]n|issue|jfm|journal|jstor|language|lay(?:date|source|summary)|lccn|location|magazine|day|month|mr|newspaper|nopp|oclc|ol|origyear|osti|others|pages?|periodical|place|pm[cd]|pmid|postscript|publisher|quote|ref|rfc|separator|series|ssrn|trans_title|type|url|volume|via|work|year|zbl)[ ]*=[\s]*)(?=[}|])/gi, '');

// regex(/(?:\|[ ]*(began|ended)[ ]*=[^}|]*)(?=[}|])/gi, ''); //disabled 18/06/20: false positive removal of associated (Start date) templates

regex(/(\|\s*work\s?\=\s?)\[\[iTunes\]\] Archive\s/gi, '|publisher=iTunes');

//rem underlining within certain fields

regex(/(\|\s*(?:journal|newspaper|periodical|publisher|work)\s*\=\s*)([^|}]+)<\/u>/gi, '$1$2');

//rem redundant top-level domains (.com, .net, .org), strip "www"

regex(/(\|\s*(?:journal|newspaper|periodical|publisher|work)\s*\=\s*)(\[\[[^\[\]\}]*\]\])\.(?:biz|com|net|org|co\.uk|(?:com\.|)[a-z]{2})(?=\s*[|}])/gi, '$1$2');

//rem duplicated publishers in separate fields (pre)

regex(/(?:[‒–—―]+||)\s*(?:The |)([^\|\}&]{3,})(?:\.com|)\s*(\|\s*(?:agency|publisher|work)\s*\=\s*)\1(?=\s*[|}])/gi, '$2$1');

regex(/(?:[‒–—―]+||)\s*([^\|\}&]{3,})(?:\.com|)\s*(\|\s*(?:agency|publisher|work)\s*\=\s*)(The |)\1(?=\s*[|}])/gi, '$2$3$1');

//'work' and its alias (pre)

regex(/(\|[ ]*?newspaper[ ]*=[^\|}]*(?:\|[^\{\}]*|))(?:\|[ ]*?work[ ]*=[^|}]*)(?=[|}])+/gi, '$1');

//rem linking within 'location' field

regex(/(\|[ ]*?(?:location|place)=[ ]*?)\[\[ ?(Abkhazia|Afghanistan|Albania|Algeria|Andorra|Angola|Antigua and Barbuda|Argentina|Armenia|Australia|Austria|Azerbaijan|(?:The |)Bahamas|Bahrain|Bangladesh|Barbados|Belarus|Belgium|Belize|Benin|Bhutan|Bolivia|Bosnia and Herzegovina|Botswana|Brazil|Brunei|Bulgaria|Burkina Faso|Burma|Burundi|Cambodia|Cameroon|Canada|Cape Verde|Central African Republic|Chad|Chile|(?:(?:People's |)Republic of |)China|Colombia|Comoros|(?:Democratic |)Republic of (?:the |)Congo|Costa Rica|Côte d'Ivoire|Croatia|Cuba|Cyprus|Czech Republic|(?:Kingdom of |)Denmark|Djibouti|Dominica|Dominican Republic|East Timor|Ecuador|Egypt|El Salvador|Equatorial Guinea|Eritrea|Estonia|Ethiopia|Fiji|Finland|France|Gabon|Georgia \(country\)|Germany|Ghana|Greece|Greenland|Grenada|Guatemala|Guinea|Guinea-Bissau|Guyana|Haiti|Honduras|Hungary|Iceland|India|Indonesia|Iran|Iraq|(?:Republic of |)Ireland|Israel|Italy|Jamaica|Japan|Jordan|Kazakhstan|Kenya|Kiribati|North Korea|South Korea|Kosovo|Kuwait|Kyrgyzstan|Laos|Latvia|Lebanon|Lesotho|Liberia|Libya|Liechtenstein|Lithuania|Luxembourg|(?:Republic of |)Macedonia|Madagascar|Malawi|Malaysia|Maldives|Mali|Malta|Marshall Islands|Mauritania|Mauritius|Myanmar|M[ée]xico|(?:Federated States of |)Micronesia|Moldova|Monaco|Mongolia|Montenegro|Morocco|Mozambique|Nagorno-Karabakh|Namibia|Nauru|Nepal|(?:Kingdom of the |)Netherlands|Holland|New Zealand|Nicaragua|Niger|Nigeria|Northern Cyprus|Norway|Oman|Pakistan|Palau|Palestine|Panama|Papua New Guinea|Paraguay|Peru|Philippines|Poland|Portugal|Qatar|Romania|Russia|Rwanda|SADR|Saint Kitts and Nevis|Saint Lucia|Saint Vincent and the Grenadines|Samoa|San Marino|São Tomé and Príncipe|Saudi Arabia|Senegal|Serbia|Seychelles|Sierra Leone|Singapore|Slovakia|Slovenia|Solomon Islands|Somalia|Somaliland|South Africa|South Ossetia|Spain|Sri Lanka|Sudan|Suriname|Swaziland|Sweden|Switzerland|Syria|Taiwan|Tajikistan|Tanzania|Thailand|Timor Leste|(?:The |)Gambia|Togo|Tonga|Transnistria|Trinidad and Tobago|Tunisia|Turkey|Turkmenistan|Tuvalu|Uganda|Ukraine|United Arab Emirates|United Kingdom|United States|Uruguay|Uzbekistan|Vanuatu|Vatican City|Venezuela|Vietnam|Yemen|Zambia|Zimbabwe)[ ]?\|[ ]?(?:\w{2,3})\]\]/gi, '$1$2');

regex(/(\|[ ]*?(?:location|place)=[ ]*?)\[\[(?:[^\|\]]+?\||)([\w\s\,]+?)\]\](?:(,? )\[\[(?:[^\|\]]+?\||)([\w\s\,]+?)\]\])(?:(,? )\[\[(?:[^\|\]]+?\||)([\w\s\,]+?)\]\]|)(?=[ ]?[|}])/gi, '$1$2$3$4$5$6');

regex(/(\|[ ]*?(?:location|place)=[ ]*?)\[\[(?:[^\|\]]+?\||)([\w\s\,]+?)\]\](?:(,? )\[\[(?:[^\|\]]+?\||)([\w\s\,]+?)\]\]|)(?=[ ]?[|}])/gi, '$1$2$3$4');

// removing english language parameters

regex(/[ ]?\{\{en[- ]icon\}\}/gi, "");

// regex(/\|[ ]*?language[ ]*?=[ ]*?en(?:-\w{2}|glish|)(?=\s*[}|])/gi, "");

// regex(/(\|[ ]*?language[ ]*?=[ ]*?)\{\{(\w{2})(?:[- ](?:icon|UK|GB|US)|)\}\}/gi, ""); // removing icon template from within "|language=" parameter

// eliminating time of day

regex(/(\|[ ]*author[ ]*=[ ]*)(?:posted|published)(?: by| on|)[\s:](?=\s*\w)/gi, "$1");

regex(/(\|[ ]*(?:date|archive-?date|access-?date|author|first|last)[ ]*=[ ]*)[0-2]?\d:[0-5]\d(?:[ ]| )(?:[ap]m ?|[ap]\.m\. |[A-Z]{1,2}T|UTC)[\.,]?[ ]?/gi, "$1");

// eliminating days of the week

regex(/(\|[ ]*(?:date|archive-?date|access-?date|author)[ ]*=[ ]*)(?:(?:Mon|Tues?|Wed|Thur?|Fri|Sat|Sun)(?:[\.,]|day)?)\s/gi, "$1");

//'Accessed'/'Obtained' -> 'Retrieved'

ohc_regex(/(?:[\.,;][ ]*(?:url |link |last |)(?:Retrieved|Accessed|Obtained))(?: on(?:line|)|):? (@month|@dd|@yyyy)(?=\D)/gi, '. Retrieved $1');

ohc_regex(/(\w\])(?:[ ]*(?:url |link |last |)(?:Retrieved|Accessed|Obtained))(?: on(?:line|)|):? (@month|@dd|@yyyy)(?=\D)/gi, '$1. Retrieved $2');

// (disabling for persistent errors) ohc_regex(/(?:Retrieved|Accessed)(?: on(?:line|)|):? (@Month\s@DD,?\s@YYYY|@DD\s@Month\s@YYYY|@yyyy-@mm-@dd)(?=\D)/gi, 'Retrieved $1');

ohc_regex(/(\w|\])[\.,;]?[ ]\((Retrieved (?:@Month\s@DD,\s@YYYY|@DD\s@Month\s@YYYY|@yyyy-@mm-@dd))\)/gi, '$1. $2');

// equivalence for French language cite web template

regex(/(\|)\s*auteur1\s*(?=\=)/gi, '$1author1');

regex(/(\|)\s*auteur2\s*(?=\=)/gi, '$1author2');

regex(/(\|)\s*citation\s*(?=\=)/gi, '$1quote');

regex(/(\|)\s*consulté le\s*(?=\=)/gi, '$1accessdate');

regex(/(\|)\s*éditeur\s*(?=\=)/gi, '$1publisher');

regex(/(\|)\s*langue\s*(?=\=)/gi, '$1language=fr');

regex(/(\|)\s*lienauteur1\s*(?=\=)/gi, '$1authorlink1');

regex(/(\|)\s*lieu\s*(?=\=)/gi, '$1place');

regex(/(\|)\s*lire en ligne\s*(?=\=)/gi, '$1place');

regex(/(\|)\s*nom1\s*(?=\=)/gi, '$1last1');

regex(/(\|)\s*nom2\s*(?=\=)/gi, '$1last2');

regex(/(\|)\s*périodique\s*(?=\=)/gi, '$1newspaper');

regex(/(\|)\s*prénom1\s*(?=\=)/gi, '$1first1');

regex(/(\|)\s*prénom2\s*(?=\=)/gi, '$1first2');

regex(/(\|)\s*site\s*(?=\=)/gi, '$1website');

regex(/(\|)\s*titre\s*(?=\=)/gi, '$1title');

regex(/(\{\{)\s*Lien web\s*(?=\|)/gi, '$1cite web');

regex(/(>)\{\{[,\.]\}\}(?=<)/gi, '$1');

regex(/\{\{date-\|([^\|]+)\|(\d{4})\-\}\}/gi, '$1 $2');

}

function Ohc_dab_news_sources() {

var txt=document.editform.wpTextbox1;

//pre-dab of piped sources

// regex(/(\[\[)(?:foo|bar)(\|)/gi, '$1foo bar \(dab\)$2');

regex(/(\[\[)(?:(?:British|English|London) Sun|Sun on Sunday|The Scottish Sun|(?:The |)Sun (?:\((?:British |)newspaper\)|\(tabloid\)|\(UK newspaper\)|\(UK\)|Newspaper|on Sunday|Online)|Thesun\.co\.uk)(?=\|)/gi, '$1The Sun (United Kingdom)');

regex(/(\[\[)Daily Star \((?:British|UK)\)(?=\|)/gi, '$1Daily Star (United Kingdom)');

regex(/(\[\[Metro)(?: \(Associated Metro Limited\)| \(Associated Newspapers\)| \(London newspaper\)| \(free London newspaper\)| UK| newspaper London| newspaper UK)(?=\|)/gi, '$1 (British newspaper)');

regex(/(\[\[)(?:Calcutta Telegraph|The Telegraph \((?:Calcutta|India)\)|(?:The |)Telegraph India|Telegraphindia\.com)(?=\|)/gi, '$1The Telegraph (Kolkata)');

regex(/(\[\[)Dawn(?:, Karachi| newspaper|\.com| \((?:Newspaper|Pakistan)\))(?=\|)/gi, '$1Dawn (newspaper)');

regex(/(\[\[The Pioneer)(?:, Karachi| newspaper| \((?:indian newspaper)\))(?=\|)/gi, '$1 (Indian newspaper)');

regex(/(\[\[)dailypioneer.com(?=\|)/gi, '$1The Pioneer (Indian newspaper)');

regex(/(\|)(Sport \()(newspaper\))(?=\||\]\])/g, '$1$2Spanish $3'); //dab moved December 2012

regex(/(=[ ]*\[\[)(?:[BE]SPN ?(?:USA|HD|Network|the ocho|\(United States\))|E.S.P.N.|(?:The |)Entertainment (?:and |)Sports Programming Network)(?:\|[\w, ]*)(?=\]\])/gi, '$1ESPN');

regex(/(\[\[)Sky ?(?:\((?:British|UK)\)|UK|United Kingdom)(?=\|)/gi, '$1Sky (United Kingdom)');

regex(/(?:agency|journal|newspaper|periodical|publisher|website|work)(\s?=\s?\[\[)(?:MTV (?:[A-Z]\w*|\([^\)\]]*\)))\|[^\)\]]*(?=\]\])/gi, 'publisher$1MTV');

//unwinding of unnecessary pipes

regex(/\[\[Public Broadcasting Service\|(PBS\]\])/gi, '[[$1');

}

function Ohc_publishers() {

var txt=document.editform.wpTextbox1;

//linked publishing houses

// removing publishers less well-known than their titles

regex(/(\|\s*publisher\s?\=MTV\|\s?)publisher\s*\=\s*(?:MTV Networks(?: \(Viacom\)|)|Viacom)/gi, '$1=');

regex(/(?:\|publisher=Turner Sports Interactive, Inc)\.? ?\|publisher=(NBA)(?= ?\|)/gi, '$1');

regex(/(\|publisher=NBA) ?\|publisher=(?:Turner Sports Interactive, Inc)\.?(?= ?\|)/gi, '$1');

regex(/\[\[Jann? Wenner\|Wenner Media\]\](?= ?\|)/gi, '');

// removing publishers for periodicals

regex(/\|publisher=\[\[(?:PMC \(company\)\||)(?:PMC|Penske Media Corporation)\]\](?=[\s\.]*[|}])/gi, '');

regex(/(?:\|\s?(newspaper|work|publisher)\s*\=\s*\[?\[?(?:Hachette Filipacchi Médias\||)Hachette Filipacchi(?: \(UK\) Ltd.?| UK|)\]?\]?)(?=[\s\.]*[|}])/gi, '');

regex(/(?:\|\s?(newspaper|work|publisher)\s*\=\s*(ACP Magazines|The Herald and Weekly Times|John Fairfax (and Sons Ltd\.?|Holdings)|Fairfax(?: Media(?: Limited|)| Digital| newspapers|)))(?=[\s\.]*[|}])/gi, '');

regex(/(?:\|\s?(newspaper|work|publisher)\s*\=\s*\[\[(ACP Magazines|The Herald and Weekly Times|John Fairfax (and Sons Ltd\.?|Holdings)|Fairfax(?: Media(?: Limited|)| Digital| newspapers))\]\])(?=[\s\.]*[|}])/gi, '');

regex(/\| ?publisher ?= ?(?:Fandango Media|\[\[Fandango Media\]\]) ?/gi, '');

regex(/(?:\|\s?publisher\s*\=\s*(Alexander Lebedev|American Media|Associated Newspapers|Bauer (?:Consumer Media|Media Group)|Cond[eé] Nast(?: Publications|)|Daily Mail and General Trust|Devin Laz[ae]rine|Dow Jones & Company|Future plc|(Guardian|Telegraph) Media Group|(?:Guardian|Independent) News (?:and|&) Media(?: Limited| Ltd\.|)|Hachette Filipacchi Médias|Hearst (?:Corporation|Magazines(?: UK|))|Herald Media|IGN Entertainment|Imdb Inc\.?|InterMedia Partners|IDG|IPC Media|Lee Enterprises|Media ?News Group|Mediacorp|Mortimer Zuckerman|MTV Networks|News (?:Corporation|International|Limited)|Postmedia Network Inc\.?|Prometheus Global Media|Reed Business Information|Rovi Corporation|Trinity Mirror|Times Newspapers|Nielsen (?: Media Research|Business Media)|Viacom|Time(?: Warner ?|)))(,? Inc| LL[CP]| Ltd|Limited|)[\s\.]*(?=[|}])/gi, '');

regex(/\|\s?publisher\s*\=\s*(?:The |)(?:Deseret News Publishing|Dispatch Printing|E\. W\. Scripps|Evening Post Publishing|Forbes(?: Publishing|, Inc\.)|Gannett?|Independent News & Media|Irish Times Trust|(?:Jann Wenner|Wenner Media)|Johnson Publishing|Journal Communications|Mac Publishing|Media24|McClatchy|Nash holdings LLC|New York Times|Seattle Times|Star Tribune|Thomp?son(?:[- ]?Reuters)?(?: Corporation| Plc.?|)|Singapore Press Holdings|Torstar|Time Inc\.|Times (?:Group|Publishing)|Tribune|Vox Media|Washington Post|World Publishing|Ziff Davis Media)(?: Co(?:mpany|\.)?)?(?=[\s\.]*[|}])/g, '');

regex(/\|\s?publisher\s*\=\s*(?:Cox|Halifax|North Jersey|Sun-Times|Tampa|Herald|Stephens|WEHCO) Media(?: Group(?:,? Inc\.)?| Berhad)?(?=[\s\.]*[|}])/g, '');

// regex(/\|\s?publisher\s*\=\s*(?:\w+ )+(?:Media|Publishing|Publications)(?: Group(?:,? Inc\.)?| Berhad)(?=[\s\.]*[|}])/g, ''); //rem "Communications" - false positive for "Ministry of Economic Affairs and Communications" reported 28 May 2014

//duplicate above with links //("Corporation" excluded - false positive with Australian Broadcasting Corporation)

regex(/(?:\|\s?publisher\s*\=\s*\[\[(Alexander Lebedev|American Media|Associated Newspapers|Bauer (?:Consumer Media|Media Group)|Cond[eé] Nast(?: Publications|)|Daily Mail and General Trust|Devin Laz[ae]rine|Dow Jones & Company|Future plc|(Guardian|Telegraph) Media Group|(?:Guardian|Independent) News (?:and|&) Media(?: Limited| Ltd\.|)|Hachette Filipacchi Médias|Hearst (?:Corporation|Magazines(?: UK|))|Herald Media|IGN Entertainment|Imdb Inc\.?|InterMedia Partners|IDG|IPC Media|Lee Enterprises|Media ?News Group|Mediacorp|Mortimer Zuckerman|MTV Networks|News (?:Corporation|International|Limited)|Postmedia Network Inc\.?|Prometheus Global Media|Reed Business Information|Rovi Corporation|Trinity Mirror|Times Newspapers|Nielsen (?: Media Research|Business Media)|Viacom|Time(?: Warner ?|)))(,? Inc| LL[CP]| Ltd|Limited|)(?:\|[^\]\}]*|)\]\][\s\.]*(?=[|}])/gi, '');

regex(/\|\s?publisher\s*\=\s*\[\[(?:The |)(?:Deseret News Publishing|Dispatch Printing|E\. W\. Scripps|Evening Post Publishing|Forbes(?: Publishing|, Inc\.)|Gannett?|Independent News & Media|Irish Times Trust|(?:Jann Wenner|Wenner Media)|Johnson Publishing|Journal Communications|Mac Publishing|McClatchy|Nash holdings LLC|New York Times|Seattle Times|Star Tribune|Thomp?son(?:[- ]?Reuters)?(?: Corporation| Plc.?|)|Singapore Press Holdings|Torstar|Time Inc\.|Times Publishing|Tribune|Vox Media|Washington Post|World Publishing|Ziff Davis Media)(?: Co(?:mpany|\.)?)?\]\](?=[\s\.]*[|}])/g, '');

regex(/\|\s?publisher\s*\=\s*\[\[(?:Cox|Halifax|North Jersey|Sun-Times|Tampa|Herald|Stephens|WEHCO) Media(?: Group(?:,? Inc\.)?| Berhad)?\]\](?=[\s\.]*[|}])/g, '');

// regex(/\|\s?publisher\s*\=\s*\[\[(?:\w+ )+(?:Media|Publishing|Publications)(?: Group(?:,? Inc\.)?| Berhad)\]\](?=[\s\.]*[|}])/g, '');

regex(/\| ?publisher ?= ?Star Publications \(Malaysia\)|\[\[Star Publications \(Malaysia\)\]\] ?/gi, '');

regex(/\| ?publisher ?= ?(?:New Straits Times Press|\[\[New Straits Times Press\]\]) ?/gi, '');

regex(/(\|\s*publisher\s?\=\s?MTV\s?)\|\s*\=\s*\(\w+\)/gi, '$1='); //palliative - correction for unsuppoeted parameters

}

function Ohc_sources_cleanup() {

var txt=document.editform.wpTextbox1;

// The following regexes for dab-links are in sets of four. If changing, please ensure all sets are changed )note (unique regex line for Empire film magazineadded 20/6/2021)

regex(/(=[ ]*(?:The ?|)[A-Z]\w*(?: [A-Z]\w*|)) \((South Africa)(?:n newspaper|)\)([ ]*[|}])/g, '$1|location=$2$3');

regex(/((?:The ?|)[A-Z]\w*(?: [A-Z]\w*|)) \((South Africa)(?:n newspaper|)\)([\.,;])/g, '$1$3$2');

regex(/(\[\[((?:The ?|)[A-Z]\w*(?: [A-Z]\w*|)))( \(South Africa(?:n newspaper|)\))(\]\][\.,;]?)/g, '$1$3|$2$4');

regex(/(\|)((?:The ?|)[A-Z]\w*(?: [A-Z]\w*|))(?: \((?:South Africa)(?:n newspaper|)\))(\]\])/g, '$1$2$3');

regex(/(=[ ]*The Advertiser) \((Adelaide)\)([ ]*[|}])/g, '$1|location=$2$3');

regex(/(The Advertiser) \((Adelaide)\)()/g, '$1$3 ($2)');

regex(/(\|)(The Advertiser)(?: \((Adelaide)\))(\]\])/g, '$1$2$4|location=$3');

regex(/(\[\[)(The Advertiser)( \((Adelaide)\))(\]\])/g, '$1$2$3|$2$5|location=$4');

regex(/(=[ ]*)(Apollo|Billboard|Brick|Campaign|Clash|Coda|Ebony|Esquire|Essence|Fanfare|Fast Company|Fortune|Glamour|Hello!|Life|Limelight|Maxim|Mojo|Mother Jones|New York|Nuts|Paste|People|Poetry|Q|Reason|Shape|Slate|Spin|Time(?: Out|)|Variety|Wired) \((?:magazine)\)(?=\s*[|}])/g, '$1$2'); //non-standard code

regex(/()(Apollo|Billboard|Brick|Campaign|Clash|Coda|Ebony|Esquire|Essence|Fanfare|Fast Company|Fortune|Glamour|Hello!|Life|Limelight|Maxim|Mojo|Mother Jones|New York|Nuts|Paste|People|Poetry|Q|Reason|Shape|Slate|Spin|Time(?: Out|)|Variety|Wired) \(magazine\)(?=)/g, '$1$2'); //non-standard code

regex(/(\[\[(Apollo|Billboard|Brick|Campaign|Clash|Coda|Ebony|Esquire|Essence|Fanfare|Fast Company|Fortune|Glamour|Hello!|Life|Limelight|Maxim|Mojo|Mother Jones|New York|Nuts|Paste|People|Poetry|Q|Reason|Shape|Slate|Spin|Time(?: Out|)|Variety|Wired) \(magazine\))(?=\]\])/g, '$1|$2'); //non-standard code - tweaked to insert title per pipe trick

regex(/(\|)(Apollo|Billboard|Brick|Campaign|Clash|Coda|Ebony|Esquire|Essence|Fanfare|Fast Company|Fortune|Glamour|Hello!|Life|Limelight|Maxim|Mojo|Mother Jones|New York|Nuts|Paste|People|Poetry|Q|Reason|Shape|Slate|Spin|Time(?: Out|)|Variety|Wired)(?: \(magazine\))(?=\]\])/g, '$1$2');

regex(/(=[ ]*)(Empire) \((?:film magazine)\)(?=\s*[|}])/g, '$1$2'); //non-standard code

regex(/()(Empire) \(film magazine\)(?=)/g, '$1$2'); //non-standard code

regex(/(\[\[(Empire) \(film magazine\))(?=\]\])/g, '$1$2'); //non-standard code

regex(/(=[ ]*\[\[(Empire) \(film magazine\))(?=\]\][ ]*\|)/g, '$1|$2'); //non-standard code (unique regex added 20/6/2021)

regex(/(\|)(Empire)(?: \(film magazine\))(?=\]\])/g, '$1$2');

//Journals

regex(/(=[ ]*)(Science|Nature) \((?:journal)\)(?=\s*[|}])/g, '$1$2'); //non-standard code

regex(/()(Science|Nature) \(journal\)(?=)/g, '$1$2'); //non-standard code

regex(/(\[\[(Science|Nature) \(journal\))(?=\]\])/g, '$1$2'); //non-standard code

regex(/(\|)(Science|Nature)(?: \(journal\))(?=\]\])/g, '$1$2');

regex(/(=[ ]*)(Quartz) \((?:publication)\)(?=\s*[|}])/g, '$1$2'); //non-standard code

regex(/()(Quartz) \(publication\)(?=)/g, '$1$2'); //non-standard code

regex(/(\[\[(Quartz) \(publication\))(?=\]\])/g, '$1$2'); //non-standard code

regex(/(\|)(Quartz)(?: \(publication\))(?=\]\])/g, '$1$2');

regex(/(=[ ]*)(Salon) \((?:website)\)(?=\s*[|}])/g, '$1$2'); //non-standard code

regex(/()(Salon) \(website\)(?=)/g, '$1$2'); //non-standard code

regex(/(\[\[(Salon) \(website\))(?=\]\])/g, '$1$2'); //non-standard code

regex(/(\|)(Salon)(?: \(website\))(?=\]\])/g, '$1$2');

regex(/(=[ ]*)(Stuff) \((?:company)\)(?=\s*[|}])/g, '$1$2'); //non-standard code

regex(/()(Stuff) \(company\)(?=)/g, '$1$2'); //non-standard code

regex(/(\[\[(Stuff) \(company\))(?=\]\])/g, '$1$2'); //non-standard code

regex(/(\|)(Stuff)(?: \(company\))(?=\]\])/g, '$1$2');

regex(/(=[ ]*Daily News) \((New York)\)([ ]*[|}])/g, '$1|location=$2$3');

regex(/(Daily News) \((New York)\)()/g, '$1$3 ($2)');

regex(/(\|)(Daily News)(?: \((New York)\))(\]\])/g, '$1$2$4|location=$3');

regex(/(\[\[)(Daily News)( \((New York)\))(\]\])/g, '$1$2$3|$2$5|location=$4');

regex(/(=[ ]*Daily Record|=[ ]*Sunday Mail) \((Scotland)\)(\s*[|}])/g, '$1|location=$2$3');

regex(/(Daily Record|Sunday Mail) \((Scotland)\)('')/g, '$1$3 ($2)');

regex(/(\|)(Daily Record|Sunday Mail)(?: \((Scotland)\))(\]\])/g, '$1$2$4|location=$3');

regex(/(\[\[)(Daily Record|Sunday Mail)( \((Scotland)\))(\]\])/g, '$1$2$3|$2$5|location=$4');

regex(/(=[ ]*(?:Daily Times)) \((Pakistan)\)(\s*[|}])/g, '$1|location=$2$3');

regex(/((?:Daily Times)) \((Pakistan)\)()/g, '$1$3 ($2)');

regex(/(\|)(Daily Times)(?: \(Pakistan\))(\]\])/g, '$1$2$3');

regex(/(=[ ]*Dawn) \((newspaper)\)(\s*[|}])/g, '$1|location=Pakistan$3');

regex(/(Dawn) \((newspaper)\)()/g, '$1$3 (Pakistan)');

regex(/(\|)(Dawn)(?: \(newspaper\))(\]\])/g, '$1$2$3');

regex(/(=[ ]*(?:Daily Star)) \((United Kingdom)\)(\s*[|}])/g, '$1|location=$2$3');

regex(/((?:Daily Star)) \((United Kingdom)\)()/g, '$1$3 ($2)');

regex(/(\|)(Daily Star)(?: \(United Kingdom\))(\]\])/g, '$1$2$3');

regex(/(=[ ]*El Comercio) \((Equador|Peru|Spain)\)(\s*[|}])/g, '$1|location=$2$3');

regex(/(El Comercio) \((Equador|Peru|Spain)\)()/g, '$1$3 ($2)');

regex(/(\|)(El Comercio)(?: \((?:Equador|Peru|Spain)\))(\]\])/g, '$1$2$3');

regex(/(=[ ]*El Mundo) \((Columbia|Spain)\)(\s*[|}])/g, '$1|location=$2$3');

regex(/(El Mundo) \((Columbia|Spain)\)()/g, '$1$3 ($2)');

regex(/(\|)(El Mundo)(?: \((?:Columbia|Spain)\))(\]\])/g, '$1$2$3');

regex(/(=[ ]*The Daily Star) \((Lebanon)\)(\s*[|}])/g, '$1|location=$2$3');

regex(/(The Daily Star) \((Lebanon)\)()/g, '$1$3 ($2)');

regex(/(\|)(The Daily Star)(?: \(Lebanon\))(\]\])/g, '$1$2$3');

regex(/(=[ ]*The Gazette) \((Montreal)\)(\s*[|}])/g, '$1|location=$2$3');

regex(/(The Gazette) \((Montreal)\)()/g, '$1$3 ($2)');

regex(/(\|)(The Gazette)(?: \(Montreal\))(\]\])/g, '$1$2$3');

regex(/(=[ ]*The Herald) \((Glasgow)\)(\s*[|}])/g, '$1|location=$2$3');

regex(/(The Herald) \((Glasgow)\)()/g, '$1$3 ($2)');

regex(/(\|)(The Herald)(?: \(Glasgow\))(\]\])/g, '$1$2$3');

regex(/(=[ ]*The Mercury) \((Hobart)\)(\s*[|}])/g, '$1|location=$2$3');

regex(/(The Mercury) \((Hobart)\)()/g, '$1$3 ($2)');

regex(/(\|)(The Mercury)(?: \(Hobart\))(\]\])/g, '$1$2$3');

regex(/(=[ ]*Metro) \((British newspaper)\)(\s*[|}])/g, '$1|location=UK$3');

regex(/(Metro) \((British newspaper)\)()/g, '$1$3 (UK)');

regex(/(\|)(Metro)(?: \(British newspaper\))(\]\])/g, '$1$2$3');

regex(/(=[ ]*The Nation) \((Malawi|Nigeria|Pakistan|Thailand)\)(\s*[|}])/g, '$1|location=$2$3');

regex(/(The Nation) \((Malawi|Nigeria|Pakistan|Thailand)\)()/g, '$1$3 ($2)');

regex(/(\|)(The Nation)(?: \((?:Malawi|Nigeria|Pakistan|Thailand)\))(\]\])/g, '$1$2$3');

regex(/(=[ ]*The National) \((Abu Dhabi)\)(\s*[|}])/g, '$1|location=$2$3');

regex(/(The National) \((Abu Dhabi)\)()/g, '$1$3 ($2)');

regex(/(\|)(The National)(?: \(Abu Dhabi\))(\]\])/g, '$1$2$3');

regex(/(=[ ]*La Presse) \((Canadian newspaper)\)(\s*[|}])/g, '$1|location=Canada$3');

regex(/(La Presse) \((Canadian newspaper)\)()/g, '$1$3 (Canada)');

regex(/(\|)(La Presse)(?: \(Canadian newspaper\))(\]\])/g, '$1$2$3');

regex(/(=[ ]*Les Échos) \((France)\)(\s*[|}])/g, '$1|location=$2$3');

regex(/(Les Échos) \((France)\)()/g, '$1$3 ($2)');

regex(/(\|)(Les Échos)(?: \(France\))(\]\])/g, '$1$2$3');

regex(/(=[ ]*Panorama) \((Gibraltar)\)(\s*[|}])/g, '$1|location=$2$3');

regex(/(Panorama) \((Gibraltar)\)()/g, '$1$3 ($2)');

regex(/(\|)(Panorama)(?: \(Gibraltar\))(\]\])/g, '$1$2$3');

regex(/(=[ ]*Público) \((Portugal)\)(\s*[|}])/g, '$1|location=$2$3');

regex(/(Público) \((Portugal)\)()/g, '$1$3 ($2)');

regex(/(\|)(Público)(?: \(Portugal\))(\]\])/g, '$1$2$3');

regex(/(=[ ]*Público) \((Spain)\)(\s*[|}])/g, '$1|location=$2$3');

regex(/(Público) \((Spain)\)()/g, '$1$3 ($2)');

regex(/(\|)(Público)(?: \(Spain\))(\]\])/g, '$1$2$3');

regex(/(=[ ]*The Pioneer) \((Indian newspaper)\)(\s*[|}])/g, '$1|location=India$3');

regex(/(The Pioneer) \((Indian newspaper)\)()/g, '$1$3 (India)');

regex(/(\|)(The Pioneer)(?: \(Indian newspaper\))(\]\])/g, '$1$2$3');

regex(/(=[ ]*Sporting Life) \((British newspaper)\)(\s*[|}])/g, '$1|location=UK$3');

regex(/(Sporting Life) \((British newspaper)\)()/g, '$1$3 (UK)');

regex(/(\|)(Sporting Life)(?: \(British newspaper\))(\]\])/g, '$1$2$3');

regex(/(=[ ]*The Standard) \((Hong Kong|Kenya)\)(\s*[|}])/g, '$1|location=$2$3');

regex(/(=[ ]*Today) \((Singapore newspaper)\)(\s*[|}])/g, '$1|location=Singapore$3');

regex(/(Today) \((Singapore newspaper)\)()/g, '$1$3 (Singapore)');

regex(/(\|)(Today)(?: \(Singapore newspaper\))(\]\])/g, '$1$2$3');

regex(/(The Standard) \((Hong Kong|Kenya)\)()/g, '$1$3 ($2)');

regex(/(\|)(The Standard)(?: \((?:Hong Kong|Kenya)\))(\]\])/g, '$1$2$3');

regex(/(=[ ]*The Star) \((Malaysia)\)(\s*[|}])/g, '$1|location=$2$3');

regex(/(The Star) \((Malaysia)\)()/g, '$1$3 ($2)');

regex(/(\|)(The Star)(?: \(Malaysia\))(\]\])/g, '$1$2$3');

regex(/(=[ ]*The Sun) \((Hong Kong|Malaysia|Nigeria|United Kingdom)\)(\s*[|}])/g, '$1|location=$2$3');

regex(/(The Sun) \((Hong Kong|Malaysia|Nigeria|United Kingdom)\)()/g, '$1$3 ($2)');

regex(/(\|)(The Sun)(?: \((?:Hong Kong|Malaysia|Nigeria|United Kingdom)\))(\]\])/g, '$1$2$3');

regex(/(=[ ]*The Telegraph) \(Calcutta\)(?=\s*[|}])/g, '$1|location=Kolkota');

regex(/(The Telegraph) \((Calcutta)\)()/g, '$1$3 ($2)');

regex(/(\|)(The Telegraph)(?: \(Calcutta\))(\]\])/g, '$1$2$3');

regex(/(=[ ]*The Daily Telegraph) \(Australia\)(?=\s*[|}])/g, '$1|location=Australia');

regex(/(The Daily Telegraph) \((Australia)\)()/g, '$1$3 (Australia)');

regex(/(\|)(The Daily Telegraph)(?: \(Australia\))(\]\])/g, '$1$2$3');

regex(/(=[ ]*(?:The Daily Times)) \((Malawi)\)(\s*[|}])/g, '$1|location=$2$3');

regex(/((?:The Daily Times)) \((Malawi)\)()/g, '$1$3 ($2)');

regex(/(\|)(The Daily Times)(?: \(Malawi\))(\]\])/g, '$1$2$3');

regex(/(=[ ]*(?:The Times)) \((Malta)\)(\s*[|}])/g, '$1|location=$2$3');

regex(/((?:The Times)) \((Malta)\)()/g, '$1$3 ($2)');

regex(/(\|)(The Times)(?: \(Malta\))(\]\])/g, '$1$2$3');

regex(/(=[ ]*Vogue) \((British magazine)\)(\s*[|}])/g, '$1|location=UK$3');

regex(/(Vogue) \((British magazine)\)()/g, '$1$3 (UK)');

regex(/(\|)(Vogue)(?: \(British magazine\))(\]\])/g, '$1$2$3');

regex(/(= ?(?:ABC|Marca)) \((newspaper)\)([ ]*[|}])/g, '$1|location=Spain$3');

regex(/((?:ABC|Marca)) \((newspaper)\)()/g, '$1$3 (Spain)');

regex(/(\|)(ABC|Marca)(?: \(newspaper\))(\]\])/g, '$1$2$3');

regex(/(= ?(?:Il Giorno)) \((newspaper)\)([ ]*[|}])/g, '$1|location=Italy$3');

regex(/((?:Il Giorno)) \((newspaper)\)()/g, '$1$3 (Italy)');

regex(/(\|)(Il Giorno)(?: \(newspaper\))(\]\])/g, '$1$2$3');

regex(/(= ?(?:El Universal)) \((Caracas|Cartagena|Mexico City)\)(?=[ ]*[|}])/g, '$1|location=$2');

regex(/((?:El Universal)) \((Caracas|Cartagena|Mexico City)\)(?=)/g, '$1 \($2\)');

regex(/(\|El Universal)(?: \(Caracas|Cartagena|Mexico City\))(\]\])/g, '$1$2');

regex(/(= ?(?:RT)) \((TV network)\)([ ]*[|}])/g, '$1|location=Russia$3');

regex(/(\|)(RT)(?: \(TV network\))(\]\])/g, '$1$2$3');

regex(/((?:agency|author|journal|magazine|newspaper|periodical|website|work)[ ]*=[ ]*\[\[[\w\s]+\w) ?(\|language=\w{2} ?(?:\|location=(?=Hong Kong|Taiwan) ?|))(\]\])[ ]*(?=[|}])/g, '$1$3 $2'); //adjust misplaced brackets due to insertion

// regex(/(=[ ]*\[\[)([^\[\]\(\)\|:]*)( \([^\[\]\(\)\|]*\))(\]\])/gi, '$1$2$3|$2$4'); //adding piping to parentheticals inside parameters //disabled 7/3/2020 false positives (e.g. Communist Party of India (Marxist))

regex(/(?:author|agency|publisher)(\s*\=\s*\[\[[^()|]+ \((?:newspaper|magazine)\)\|[^\[\]|]+\]\])/gi, 'work$1');

// removing redundancies

regex(/ – (?:Times of India|Rediff.com [\w]*)(?=[ ]?\|)/gi, '');

regex(/(?: +[‒–—―] *Times Of India|)(\]. +The Times of India\.)indiatimes\.com/gi, '$1');

regex(/(?: +[‒–—―] *([\w ]+))(\|\s*(?:publisher|work)\s*\=\s*\1)/gi, '$2');

regex(/(\w''\.)indiatimes\.com/gi, '$1');

// regex(/\|[ ]?language[ ]?\=[ ]?English[ ]*?(?=[|}])/gi, ''); //disabled removal of non-displaying language template parameter

regex(/- [\w]*\.com[ ]*\|/gi, '|');

regex(/(.) – Google [^ \]]*(\][\.,;]) Books\.google\.\w{2,3}(\.| )/gi, '$1$2Google Books$3');

regex(/(.) at Discogs(\][\.,;]) Discogs\.com(\.| )/gi, '$1$2Discogs$3');

regex(/(\|\s*author\s?\=\s?)(?:posted|publishe[dr]|written)\s?(?:by|on):?\s/gi, '$1');

regex(/\|\s?(?:publisher|website|work)(\s?\=MTV)\|\s?publisher\s*\=\s*(?:MTV Networks|Viacom)/gi, '|publisher$1=');

// regex(/\|\s?(?:publisher|website|work)\s*\=\s*(?:BBC|BBC News(?: Online|))\s*(\|[^}<>]*|)\|\s?publisher\s*\=\s*(?:BBC|BBC News(?: Online|)|British Broadcasting Corporation)(?=[\s\.]*[|}])/g, '|work=\'\'BBC News\'\' $1');

// regex(/\|\s?(?:publisher|website|work)\s*\=\s*(BBC Sports?)\s*(\|[^}<>]*|)\|\s?publisher\s*\=\s*(?:BBC|BBC News(?: Online|)|British Broadcasting Corporation)(?=[\s\.]*[|}])/g, '|work=\'\'$1\'\'$2');

// regex(/\|\s?publisher\s*\=\s*(BBC (?:Sports|News))\s*(?=\|[^}<>]*|)/g, '|work=\'\'$1\'\'');

regex(/\|\s?(?:publisher|website|work)\s*\=\s*(Metacritic|\[\[Metacritic\]\])\s*(\|[^}<>]*|)\|\s?publisher\s*\=\s*(CBS Interactive|\[\[CBS Interactive\]\])(?=[\s\.]*[|}])/g, '|publisher=$1$2');

//rem duplicated publishers in separate fields (post); rem preceding nbsp

regex(/\s? \s?(\|\s*(?:agency|publisher|work)\s*\=\s*)/gi, ' $1');

regex(/(?:[‒–—―]+||)\s*(?:The |)([^\|\}&]{3,})(?:\.com|)\s*(\|\s*(?:agency|publisher|work)\s*\=\s*)\1(?=\s*[|}])/gi, '$2$1');

regex(/(?:[‒–—―]+||)\s*([^\|\}&]{3,})(?:\.com|)\s*(\|\s*(?:agency|publisher|work)\s*\=\s*)(The |)\1(?=\s*[|}])/gi, '$2$3$1');

//per Help:Citation Style 1#Elements not included

// toggling domains within |website= parameter

// regex(/(\|\s*(?:work|website)\s*\=\s*)(\w+\.(?:com?|org|net|gov|ac|)(?:\.[a-z]{2}|))(?=\s*[|}])/gi, '$1\'\'$2\'\'');

// reordering 'work' and 'publisher'; reordering 'work' and 'website'

regex(/(\|\s*publisher\s*\=\s*(?:\[\^<{}\*\]\]|[^{}\|\}<>]*))(\s?\|[^}<>]*|)(\|\s*(?: journal|newspaper|magazine|periodical|website|work)\s*\=\s*(?:\[\^<{}\*\]\]|[^{}\|\}<>]*))(?=[\s\.]*[|}])/g, '$3$1$2');

regex(/(\|\s*website\s*\=\s*(?:\[\^<{}\*\]\]|[^{}\|\}<>]*))(\s?\|[^}<>]*|)(\|\s*work\s*\=\s*(?:\[\^<{}\*\]\]|[^{}\|\}<>]*))(?=[\s\.]*[|}])/g, '$3$1$2');

/// removing identical/similar entries in 'work' and 'publisher', and in 'work' and 'website'

regex(/\|\s?work\s*\=\s*([^=|}\[<>]*)(\|[^}<>]*|)\|\s?publisher\s*\=\s*(?:\1|\[\[\1\]\])\.?(?=\s*[|}])/g, '|work=$1$2'); //unlinked work

regex(/\|\s?work\s*\=\s*\[\[([^<|\]]*)\]\](\|[^}<>]*|)\|\s?publisher\s*\=\s*(?:\1|\[\[\1\]\])\.?(?=\s*[|}])/g, '|work=$1$2'); //unpiped work

regex(/\|\s?work\s*\=\s*(\[\[(?:[^<|\]]*)\|([^}<>]*)\]\])(\|[^}<>]*|)\|\s?publisher\s*\=\s*(\1|\2)\.?(?=\s*[|}])/g, '|work=$1$3'); //piped work

regex(/\|\s?publisher\s*\=\s*([^=|}\[<>]*)(\|[^}<>]*|)\|\s?publisher\s*\=\s*(?:\1|\[\[\1\]\])\.?(?=\s*[|}])/g, '|publisher=$1$2'); //unlinked work

regex(/\|\s?publisher\s*\=\s*\[\[([^<|\]]*)\]\](\|[^}<>]*|)\|\s?publisher\s*\=\s*(?:\1|\[\[\1\]\])\.?(?=\s*[|}])/g, '|publisher=$1$2'); //unpiped work

regex(/\|\s?publisher\s*\=\s*(\[\[(?:[^<|\]]*)\|([^}<>]*)\]\])(\|[^}<>]*|)\|\s?publisher\s*\=\s*(\1|\2)\.?(?=\s*[|}])/g, '|publisher=$1$3'); //piped work

regex(/(\|\s*(?:newspaper|website|work)\s*\=\s*(?:[^=|}\[<>]*)(?:\|[^}<>]*|))\|\s?work\s*\=\s*(?:[^|}]*)(?=\s*[|}])/g, '$1'); //unlinked work

regex(/(\|\s*(?:newspaper|website|work)\s*\=\s*\[\[([^<|\]]*)\]\](?:\|[^}<>]*|))\|\s?work\s*\=\s*(?:[^|}]*)(?=\s*[|}])/g, '$1'); //linked unpiped work

regex(/(\|\s*(?:newspaper|website|work)\s*\=\s*(?:\[\[(?:[^<|\]]*)\|(?:[^}<>]*)\]\])(?:\|[^}<>]*|))\|\s?work\s*\=\s*(?:\[\[(?:[^<|\]]*)\|(?:[^}<>]*)\]\])(?=\s*[|}])/g, '$1'); //piped work x2

regex(/(\|\s*(?:newspaper|website|work)\s*\=\s*(?:\[\[(?:[^<|\]]*)\|(?:[^}<>]*)\]\])(?:\|[^}<>]*|))\|\s?work\s*\=\s*(?:[^\[|}]*)(?=\s*[|}])/g, '$1'); //piped work x1

regex(/\|\s?location\s*\=\s*New York(?: City|)\s*(\|[^}<>]*|)\|\s?location\s*\=\s*(New York(?: City|)|USA)(?=[\s\.]*[|}])/g, '|location=New York $1');

regex(/(\|[ ]*?location=[^\|<\}]*)([^<}]*|)\|[ ]*?location=[^|}]*(?=[|}])/gi, '$1$2');

regex(/(\|[ ]*?publisher=[^=}]*)(?:\|[ ]*?publisher=[^=}]*)(?=[|}])/gi, '$1');

// regex(/(\|[ ]*?work=[^=}]*)(?:\|[ ]*?work=[^=}]*)(?=[|}])/gi, '$1$2');

regex(/(\|[ ]*?agency=[^=}]*)([^<}]*|)(?:\|[ ]*?agency=[^=}]*)(?=[|}])/gi, '$1$2');

//remove redundant parameter ('website' is an alias of 'work')

// regex(/\|\s?(?:newspaper|website|work)\s*\=\s*([^=|}\[<>]*)(\|[^}<>]*|)\|\s?(?:newspaper|website|work)\s*\=\s*(?:\[\^\+\]\]|[|}]+)(?=\s*[|}])/g, '|work=$1$2'); //unlinked work

// regex(/\|\s?(?:newspaper|website|work)\s*\=\s*\[\[([^<|\]]*)\]\](\|[^}<>]*|)\|\s?(?:newspaper|website|work)\s*\=\s*(?:\[\^\+\]\]|[|}]+)(?=\s*[|}])/g, '|work=$1$2'); //unpiped work

// regex(/\|\s?(?:newspaper|website|work)\s*\=\s*(\[\[(?:[^<|\]]*)\|([^}<>]*)\]\])(\|[^}<>]*|)\|\s?(?:newspaper|website|work)\s*\=\s*(\1|\2)\.?(?=\s*[|}])/g, '|work=$1$3'); //piped work

regex(/(\|\s*(?:newspaper|website|work)\s*\=\s*[^=}<>]*(?:\|[^}<>]*|))\|\s?(?:newspaper|website|work)\s*\=\s*[^\}|]+(?=\s*[|}])/g, '$1'); //universal work and aliases

//unwinding of unnecessary pipes

regex(/\[\[([^\]\|]*)\|\1(?=\]\])/gi, '[[$1');

// removing artefacts (within citation templates)

// regex(/(\|[ ]*?author=)(?:(?:Mon|Tues|Wednes|Thurs|Fri|Satur|Sun)day,? ?)(?=[^\]\|\}]*\|)/gi, '$1'); //redundant/duplicated

regex(/(?:| (?:Daily|English|(?:Mail |)Online|Music|News|Indian Express))(?=\s*\|)+/gi, ''); //|=: Video Gaming & Real Talk - PS4, Xbox One, Switch, PC, Handheld, Retro

regex(/(?:(?:[ ]+|[ ]+HighBeam Research[ ]+[-–][ ]+FREE trial[ ]+|)\|publisher=Highbeam.com)/gi, '|via=Highbeam');

regex(/( | [\w, ]*?)(?=[ ]|)/gi, '');

regex(/( | Comment is free)/gi, '');

regex(/\|\s?title\s*\=\s*BBC (?:News|Sport)\s?(?:[-–]|| )\s?/gi, '|title=');

regex(/\|\s?title\s*\=\s*Asia Times Online\s?(?:[-–]|| |:+)\s?/gi, '|title=');

regex(/(?:Entertainment|Football|(?:inter|)national|Latest|local|Music|UK|world|) News |(?=[ ]?[&\|])/gi, '');

regex(/(?:[-–|]||)[ ]*(?:Entertainment|Football|(?:inter|)national|Latest|local|Music|UK|world|) News(?=[ ]?[&\|])/gi, '');

regex(//gi, '');

regex(/(\|\s*title\s*\=\s*[^|}]+?)[-‒–—―]\s+([^|}]+?)(\|\s*(?:publisher|work)\s*\=\s*\2)/gi, '$1$3');

regex(/(\|\s*title\s*\=\s*([^|}]+?))[-‒–—―]\s+([^|}]+?\|\s?(?:publisher|work)\s*\=\s*\2)/gi, '$1$3');

regex(/(\|\s*website\s*\=\s*Play Legit):\s+[^|}]+?(?=[\|}])/gi, '$1');

regex(/(DOC|PDF)\) \./gi, '$1).');

// removing artefacts (outside of citation templates)

regex(/([\w]+\'\')\.(?:co(?:m|m?\.\w{2})|\.\w{2})[ ]/gi, '$1. ');

// removing other artefacts

regex(/(UEFA\]\])\.(?:co(?:m|m?\.\w{2})|\.\w{2})(?= ?[\|{}])/gi, '$1');

regex(/\bthe ((?:'''?|)the )/gi, '$1');

// expanding/dating tags

// regex(/{{(?:cn|fact)}}/gi, '{{citation needed|date=October 2017}}');

//dynamic columns for reflists; remove scroll bar

regex(/((?:[Rr]eferences|[Nn]otes)[ ]?={2,4}[\n\r])[\r\n\s]*

]*>([\S\s]*)<\/div>/g, '$1$2');

regex(/<[Rr]eferences ?\/>/g, '{{reflist}}'); //default

// regex(/({{reflist)\|30em([^}]*}})/g, '$1$2');

// regex(/({{reflist)\|\d(?:\dem|)(}})/g, '$1$2'); //default

}

function Ohc_duplicatedcite() {

var txt=document.editform.wpTextbox1;

// disambiguating duplicated ref names

//strips down duplicated refs with doubled-up citation templates

regex(/("]*)>(\{\{[^\}]*\}\})([\s\S]*)\1>\2<\/ref>([\s\S]*)\1>\2<\/ref>([\s\S]*)\1>\2<\/ref>/gi, '$1>$2$3$1/>$4$1/>$5$1/>');

regex(/("]*)>(\{\{[^\}]*\}\})([\s\S]*)\1>\2<\/ref>([\s\S]*)\1>\2<\/ref>/gi, '$1>$2$3$1/>$4$1/>');

regex(/("]*)>(\{\{[^\}]*\}\})([\s\S]*)\1>\2<\/ref>/gi, '$1>$2$3$1/>');

regex(/("]*)><\/ref>/gi, '$1/>');

regex(/("]*)>([\s\S]*)\1>([^\{\}]*)\1>([^\{\}]*)/gi, '$1A>$2$1B>$3$1C>$4');

// regex(/("]*)>([\s\S]*)\1>/gi, '$1A>$2$1B>');

// regex(/(([\s\S]*)\1>/gi, '$1A>$2$1B">');

}

function Ohc_sourceunlink() {

var txt=document.editform.wpTextbox1;

//removal of all links from sources

//rem linking within citation template parameters

regex(/(\|[ ]*?(?:author|agency|publisher|journal|newspaper|periodical|via|website|work)=[ ]*?)\[\[([^\|\]]+?)\]\](?:(,? )\[\[([^\|\]]+?)\]\]|)([ ]{0,1})/gi, '$1$2$3$4$5');

regex(/(\|[ ]*?(?:author|agency|publisher|journal|newspaper|periodical|via|website|work)=[ ]*?)\[\[(?:[^\|\]]+?\|)([\w\s\,]+?)\]\](?:(,? )\[\[([^\|\]]+?)\]\]|)([ ]{0,1})/gi, '$1$2$3$4$5');

//rem other linking within refs tags

regex(/(]*>[^<]+?[\]\.,;]\s+)\[\[(?:[^\|\]<]*\||)([^\|\]<]*)(?: online|)\]\]([^<]*?<\/ref>)\) \./gi, '$1$2$3).');

regex(/(]*>[^<]+?[\]\.,;]\s+\'\')\[\[(?:[^\|\]<]*\||)([^\|\]<]*)(?: online|)\]\](\'\'[^<]*?<\/ref>)\) \./gi, '$1$2$3).');

}

/** ------------------------------------------------------------------------ **/

/// PROTECTION BY STRING SUBSTITUTION

var linkmap=[];

function ohc_protect_urls()

{

// protects only urls

// 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;

};

// protect the rest (after purging urls inserted in ('website' or )'work' parameters)

regex(/((?:[\[=]\s*)(?:https?:|ftp:))([^\]\|\}]*)(\s*[\]|}])/gi, protect_function);

regex(/((?:Category|Image|File):)([^|\]]*)([|\]])/gi, protect_function); //protect file names from being changed

regex(/(\{\{(?:FAA-airport|harv\w*|sfn\w*|cite ?book|listen)\s?\|)([^\}]+)(\}\})/gi, protect_function);

regex(/(\|\s*(?:contribution|quote|title)\s*=)([^|}]+)([\|\}])/gi, protect_function);

//whitelisting -against changes made by generic regex in Ohc_sourcepub (e.g. Fast Company)

regex(/(\|\s*(?:journal|newspaper|periodical|website|work)\s*=\s*Fast )(Company\s*)([\|\}])/gi, protect_function);

}

function ohc_unprotect_urls()

{

//removes protection put in place by function ohc_protect_fmt (all cats, templates etc.)

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_Source_edit_summary(){

//Add a tag to the summary box

setoptions(minor='true');

setreason('Script-assisted fixes: per CS1 and MOS:ITALICS', 'append');

doaction('diff');

}

function Ohc_ref_format_new() {

var txt=document.editform.wpTextbox1;

Ohc_remove_urls();

Ohc_duplicatedcite();

ohc_protect_urls();

Ohc_sources_prep();

ohc_foreign_dates();

Ohc_unpipe();

Ohc_dab_news_sources();

Ohc_sourcename();

Ohc_sourcework();

Ohc_sourcepub();

Ohc_sourceagency();

Ohc_redo_pipe();

Ohc_publishers();

Ohc_sources_cleanup();

ohc_unprotect_urls();

Ohc_Source_edit_summary();

}

function Ohc_noverify() {

var txt=document.editform.wpTextbox1;

// removing references to other WP articles and 'external' WP links

regex(/]*>[^<>]*\|[ ]*url ?= ?https?:\/\/(?:\w{2}\.wikipedia\.org\/wiki|(?:www\.|)(?:blogger|blogspot|facebook|findagrave|instagram|mailonline|myspace|twitter)\.com)\/[^<>]*<\/ref>/gi, '');

regex(/https?:\/\/(?:en\.wikipedia\.org\/wiki|(?:www\.|)(?:blogger|blogspot|facebook|findagrave|instagram|mailonline|myspace|twitter)\.com)\/[^\s\]<]*<\/ref>/gi, '');

regex(/\[https?:\/\/(?:en\.wikipedia\.org\/wiki|(?:www\.|)(?:blogger|blogspot|facebook|findagrave|instagram|mailonline|myspace|twitter)\.com)\/[^\s\]]*[ ]+[\w\d][^\]]*\]<\/ref>/gi, '');

regex(/\|[ ]*url[ ]*=[ ]*https?:\/\/(?:\w{2}\.wikipedia\.org\/wiki|(?:www\.|)(?:blogger|blogspot|facebook|findagrave|instagram|mailonline|myspace|twitter)\.com)[^\s\|\{\}<]*(?=[ ]*[|}])/gi, '');

regex(/[ ]\[https?:\/\/en\.wikipedia\.org\/wiki\/[^\s\]]*[ ]+([\w][^\]]*)\]/gi, ' $1');

}

function ohc_ref_names() {

// give names to citations in templates that are without names

regex(/((?:[\w,\s\.&]+\"?\[)https?:\/\/(?:[^||{}]*\D|)(\d{6,12})[^<>]*)(?=<\/ref>)/gi, "$1"); //urls with non-date serial numbers

regex(/((?:[^<>]*\|\s*url\s*=|[\[\s]?)https?:\/\/(?:[^||{}]*\D|)(\d{6,12})[^<>]*)(?=<\/ref>)/gi, "$1"); //urls with non-date serial numbers

regex(/((?:[^<>]*\|\s*url\s*=|[\[\s]?)https?:\/\/(?:[^||{}\d]*(\d{6,12})[^<>]*)(?=<\/ref>)/gi, "$1"); //urls with non-date serial numbers

regex(/((?:[^<>]*\|\s*url\s*=|[\[\s]?)https?:\/\/(?:[^||{}\d]*(id\w{11})[^<>]*)(?=<\/ref>)/gi, "$1"); //reuters urls with non-date serial numbers

ohc_regex(/((?:[^<>]*\|\s*url\s*=|[\[\s]?)https?:\/\/(?:[^||{}\d]*@YYYY[-\/]@MM[-\/]@DD\/(\w+)[^<>]*)(?=<\/ref>)/gi, "$1"); //urls with non-date serial numbers

ohc_regex(/((?:[^<>]*\|\s*url\s*=|[\[\s]?)https?:\/\/(?:[^||{}\d]*@YYYY[-\/]@Mon[-\/]@DD\/(\w+)[^<>]*)(?=<\/ref>)/gi, "$1"); //urls with non-date serial numbers

ohc_regex(/([^<>]*\|\s*url\s*=https?:\/\/(?:[^|]*\|\s*date\s*=\s*@Day @Month @YYYY\s*[|}][^<>]*)(?=<\/ref>)/gi, "$1");

ohc_regex(/([^<>]*\|\s*url\s*=https?:\/\/(?:[^|]*\|\s*date\s*=\s*@Month @Day, @YYYY\s*[|}][^<>]*)(?=<\/ref>)/gi, "$1"); //this line may cause unwarranted substitution of "$5" by a comma (e.g. in 2019–20 Hong Kong protests)

ohc_regex(/([^<>]*\|\s*url\s*=https?:\/\/(?:[^|]*\|\s*date\s*=\s*=\s*@YYYY-@MM-@DD\s*[|}][^<>]*)(?=<\/ref>)/gi, "$1");

ohc_regex(/((?:[^<>]*\|\s*url\s*=|\[?)https?:\/\/(?:[^|<]+\.)*(\w+)\.(?:(?:com?|org|net|gov|ac|[a-z]{2})(?:\.[a-z]{2}|))\/[^<>|{}]+@YYYY[\/-]?@Month[\/-]?@Day[^<>]*)(?=<\/ref>)/gi, "$1"); //urls with embedded dates

}

function prevDef ( e ) {

e.preventDefault();

}

function addLinks() {

var add = mw.util.addPortletLink;

$( add('p-tb', '#', 'Fix SOURCES', 's-citefix', 'Run entire new module', , ) ).click(prevDef).click(Ohc_ref_format_new);

$( add('p-tb', '#', 'Add REFTAGS', 's-reftags', 'Insert missing ref tags', , ) ).click(prevDef).click(Ohc_add_ref_tags);

$( add('p-tb', '#', 'CITE name', 's-citename', 'gives names to all citations', , ) ).click(prevDef).click(ohc_ref_names);

$( add('p-tb', '#', 'Fill DOMAIN_NAME', 's-domainname', 'imports domain names to publisher field', , ) ).click(prevDef).click(Ohc_fill_pub_with_domain);

$( add('p-tb', '#', 'Unlink source name', 's-unlink', 'Unlinks source', , ) ).click(prevDef).click(Ohc_sourceunlink);

}

if( $.inArray( mw.config.get( 'wgAction' ), [ 'edit', 'submit' ] ) !== -1 ){

$.when(

$.ready,

mw.loader.using( 'mediawiki.util' ),

/*************

*** Regex menu framework

*** by m:user:Pathoschild

*** - adds a sidebar menu of user-defined scripts.

*************/

$.ajax(

'//meta.wikimedia.org/w/index.php?title=User:Pathoschild/Scripts/Regex_menu_framework.js&action=raw&ctype=text/javascript',

{ dataType:'script', cache:true }

)

)

.then( addLinks );

}

$.when(mw.loader.using('mediawiki.util'), $.ready).done(function () {

if(document.forms.editform) {

// test buttons

// mw.util.addPortletLink('p-tb', 'javascript:Ohc_remove_urls()', 'Remove certain urls', 's-removeurl', '0.Improper urls', , );

// mw.util.addPortletLink('p-tb', 'javascript:Ohc_sources_prep()', 'Prepare sources', 's-prepsource', '1.Prepares sources', , );

// mw.util.addPortletLink('p-tb', 'javascript:Ohc_unpipe()', 'Unpipe sources', 's-unpipe', '2.Unpipe linked sources', , );

// mw.util.addPortletLink('p-tb', 'javascript:Ohc_dab_news_sources()', 'Applies DAB', 's-dab', '3.Applies disambiguation', , );

// mw.util.addPortletLink('p-tb', 'javascript:Ohc_sourcename()', 'Align source name', 's-align', '4.Corrects source name – subscript1', , );

// mw.util.addPortletLink('p-tb', 'javascript:Ohc_sourcework()', 'Cleanup WORK', 's-work', '5.Cleanup and reclassifies as WORK – subscript2', , );

// mw.util.addPortletLink('p-tb', 'javascript:Ohc_sourcepub()', 'Cleanup publisher', 's-publish', '6.Cleanup and reclassifies as PUBLISHER – subscript2', , );

// mw.util.addPortletLink('p-tb', 'javascript:Ohc_sourceagency()', 'Cleanup agency', 's-agency', '7.Cleanup and reclassifies as AGENCY – subscript2', , );

// mw.util.addPortletLink('p-tb', 'javascript:Ohc_redo_pipe()', 'Repipe sources', 's-repipe', '8.Repipe ambiguous links', , );

// mw.util.addPortletLink('p-tb', 'javascript:Ohc_publishers()', 'Rem publishers', 's-rempublish', '9.Removing certain publishers fields', , );

// mw.util.addPortletLink('p-tb', 'javascript:Ohc_sources_cleanup()', 'Final cleanup', 's-cleanup', '10.Cleanup after script actions', , );

}

});

//