Misplaced Pages

User:Ohconfucius/test/Sources.js

Article snapshot taken from[REDACTED] with creative commons attribution-sharealike license. Give it a read and then ask your questions in the chat. We can research this topic together.
< User:Ohconfucius

This is the current revision of this page, as edited by Ohconfucius (talk | contribs) at 13:08, 25 April 2024 (added to list of magazines and journals). The present address (URL) is a permanent link to this version.

Revision as of 13:08, 25 April 2024 by Ohconfucius (talk | contribs) (added to list of magazines and journals)(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff)
Code that you insert on this page could contain malicious content capable of compromising your account. If you import a script from another page with "importScript", "mw.loader.load", "iusc", or "lusc", take note that this causes you to dynamically load a remote script, which could be changed by others. Editors are responsible for all edits and actions they perform, including by scripts. User scripts are not centrally supported and may malfunction or become inoperable due to software changes. A guide to help you find broken scripts is available. If you are unsure whether code you are adding to this page is safe, you can ask at the appropriate village pump.
This code will be executed when previewing this page.
This user script seems to have a documentation page at User:Ohconfucius/test/Sources.
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Misplaced Pages:Bypass your cache.
// <nowiki>
// *********************************************************************************************

//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/TemplateScript
 * @update-token ]
 */
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?(\]*\])(?!*+)/gi, '$1<ref>$2</ref>');

}

function Ohc_fill_pub_with_domain() {
 var txt=document.editform.wpTextbox1;
 //test
	regex(/\s?(<ref>(?:*\|\s*url\s*=|\{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|)(?:\.{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|)(?:\.{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(/(<ref*>*\|*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(/(<ref*>*\|*url ?= ?https?:\/\/(?:(?:www\.|)(?:myspace|findagrave)\.com)\/*<\/ref>)(?:\{\{Primary source inline\}\}|)/gi, '$1{{Primary source inline}}');
	regex(/(<ref>\s*https?:\/\/(?:(?:www\.|)(?:blogger|blogspot|facebook|sites\.google|findagrave|instagram|myspace|tiktok|twitter|wordpress)\.com)\/<]*<\/ref>)(?:\{\{Primary source inline\}\}|)/gi, '$1{{Primary source inline}}');
	regex(/(<ref>\s*\]*+]*\]<\/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?(?:|\}\}))/gi, '$1 ');
    regex(/(\|\s*title\s*\=)\s*Archived copy(?=\s?(?:|\}\}))/gi, '$1 ');
	regex(/\s?<!--ACTUAL ARTICLE TITLE BELONGS HERE!(?: original text:|)*-->/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*)\]*\s(]*)\]/gi, '$1$2'); //leave only linked text
	regex(/({{cit+\|\s?website\s*\=\s*)\]*\s(]*)\]/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*)\]*\s(]*)\]/gi, '$1$2');
	regex(/(\|\s*author(?:link\d?|)\s*\=\s*)(?:https?:\/\/|)www\.*(?=)/gi, '$1');  //rem outright (not a WL)

// removing references to other WP articles and 'external' WP links
	regex(/<ref*>*\|*url ?= ?https?:\/\/\w{2}\.wikipedia\.org\/w*<\/ref>/gi, '{{cn}}<!-- WP:RS needed; removed link to WP-->');
	regex(/<ref>\s*https?:\/\/\w{2}\.wikipedia\.org\/wiki\/<]*<\/ref>/gi, '{{cn}}<!-- WP:RS needed; removed link to WP-->');
	regex(/<ref>\s*\]*+]*\]<\/ref>/gi, '{{cn}}<!-- WP:RS needed; removed link to WP-->');
	regex(/<ref(?: name=|)>*\|\s*url*=*https?:\/\/\w{2}\.wikipedia\.org\/w**<\/ref>/gi, '{{cn}}<!-- WP:RS needed; removed link to WP-->');
	regex(/\]*+(]*)\]/gi, ' ]');

//deprecated sources
	regex(/<ref*>*\|*url ?= ?https?:\/\/(?:(?:\w+\.|)((?:the|)epochtimes|ntdtv)\.com)\/*<\/ref>/gi, '<!--rem deprecated source \($1\)-->');
	regex(/<ref*>*\|*url ?= ?https?:\/\/(?:(?:\w+\.|)(thesun|dailymail)\.co\.uk)\/*<\/ref>/gi, '<!--rem deprecated source \($1\)-->');

	regex(/(\|\s*url\s*\=\s*|\+)(?:#{12,13}|\?CMP=fb_gu)(?=|{}<>])/gi, '$1$2'); //rem link tracking 
	regex(/(\|\s*url\s*\=\s*)(https?:+\.html?)\?{1,5}(?=|{}<>])/gi, '$1$2'); //rem link tracking
	regex(/(\|\s*url\s*\=\s*|\+\/books\?id=\w{12}&pg=PA\d{1,3})&dq+(?=\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?|)*(?=)/gi, '');
	regex(/(\|\s*author\s*\=\s*)(*(?: *)*) (?:(?:wire |)staff|(?:staff |)(?:reporter|writer)s?)*(?=)/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?\.?)*(\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)(?=*)/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|Smallcaps|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?\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(/(\**|)\\|]*\]\]*/gi, '');
//	regex(/\**\{\{(?:Facebook|Find a Grave|Myspace)\|(*)\}\}*/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*)(?:\\])\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+)\|\s?date(\s?=\s?\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*)\'&#39;(+)\'&#39;/gi, '$1$2'); //rem &#39; 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*(?:\]*\]\]|*))(?=*)/g, '$3$1$2');
         regex(/(\|\s*website\s*\=\s*(?:\]*\]\]|*))(\s?\|*|)(\|\s*(?: journal|newspaper|magazine|periodical|work)\s*\=\s*(?:\]*\]\]|*))(?=*)/g, '$3$1$2');

/// removing identical/similar entries in 'work' and 'publisher', and in 'work' and 'website' (different default vs  cleanup rules)
         regex(/\|\s?work\s*\=\s*(*)(\|*|)\|\s?(?:publisher|website)\s*\=\s*(?:\1|\\])\.?(?=\s*)/g, '|publisher=$1$2'); //unlinked work
         regex(/\|\s?work\s*\=\s*\]*)\]\](\|*|)\|\s?(?:publisher|website)\s*\=\s*(?:\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|\\])\.?(?=\s*)/g, '|publisher=$1$2'); //unlinked work
         regex(/\|\s?publisher\s*\=\s*\]*)\]\](\|*|)\|\s?publisher\s*\=\s*(?:\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|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*))(+|)(?=\s?)/gi, '$1\'$2\'$3');

  // adjust for possibly incorrectly input title
         regex(/(\|\s*title\s*\=\s*)(*)(\s?\|*|)\|\s?(publisher|work)\s*\=\s*(?:\1|\\])(?=\s*)/g, '$1 |$4=$2$3'); //creating deliberate error (blank title) per Trappist
 
    // rem misplaced punctuation
         regex(/(<ref*>+?\.\},;–]\s*\'\'*(?: *){0,3})(\.com|)()(\'\')(?=*?<\/ref>)/gi, '$1$2$4$3');
         regex(/(+)\.(\])/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|isn|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|pmid|postscript|publisher|quote|ref|rfc|separator|series|ssrn|trans_title|type|url|volume|via|work|year|zbl)*=*)(?=)/gi, '');
//         regex(/(?:\|*(began|ended)*=*)(?=)/gi, ''); //disabled 18/06/20: false positive removal of associated (Start date) templates
         regex(/(\|\s*work\s?\=\s?)\\] Archive\s/gi, '|publisher=]');

    //rem underlining within certain fields
	regex(/(\|\s*(?:journal|newspaper|periodical|publisher|work)\s*\=\s*)<u>(+)<\/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\.|){2})(?=\s*)/gi, '$1$2');

    //rem duplicated publishers in separate fields (pre)
		regex(/(?:+|&#124;)\s*(?:The |)({3,})(?:\.com|)\s*(\|\s*(?:agency|publisher|work)\s*\=\s*)\1(?=\s*)/gi, '$2$1');
		regex(/(?:+|&#124;)\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)=*?)\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)=*?)\]+?\||)(+?)\]\](?:(,? )\]+?\||)(+?)\]\])(?:(,? )\]+?\||)(+?)\]\]|)(?=?)/gi, '$1$2$3$4$5$6');
         regex(/(\|*?(?:location|place)=*?)\]+?\||)(+?)\]\](?:(,? )\]+?\||)(+?)\]\]|)(?=?)/gi, '$1$2$3$4');

// removing english language parameters
    regex(/?\{\{enicon\}\}/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*\w)/gi, "$1");
    regex(/(\|*(?:date|archive-?date|access-?date|author|first|last)*=*)?\d:\d(?:|&nbsp;)(?:m ?|\.m\. |{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(/(=*\SPN ?(?:USA|HD|Network|the ocho|\(United States\))|E.S.P.N.|(?:The |)Entertainment (?:and |)Sports Programming Network)(?:\|*)(?=\]\])/gi, '$1ESPN');
         regex(/(\[\[)Sky ?(?:\((?:British|UK)\)|UK|United Kingdom)(?=\|)/gi, '$1Sky (United Kingdom)');
         

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

//unwinding of unnecessary pipes
         regex(/\\])/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(/\\](?= ?\|)/gi, '');
// removing publishers for periodicals
         regex(/\|publisher=\\](?=*)/gi, '');
         regex(/(?:\|\s?(newspaper|work|publisher)\s*\=\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|)))(?=*)/gi, '');
         regex(/(?:\|\s?(newspaper|work|publisher)\s*\=\s*\\])(?=*)/gi, '');
          regex(/\| ?publisher ?= ?(?:Fandango Media|\\]) ?/gi, '');
        regex(/(?:\|\s?publisher\s*\=\s*(Alexander Lebedev|American Media|Associated Newspapers|Bauer (?:Consumer Media|Media Group)|Cond Nast(?: Publications|)|Daily Mail and General Trust|Devin Lazrine|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| Ltd|Limited|)*(?=)/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|\.)?)?(?=*)/g, '');
         regex(/\|\s?publisher\s*\=\s*(?:Cox|Halifax|North Jersey|Sun-Times|Tampa|Herald|Stephens|WEHCO) Media(?: Group(?:,? Inc\.)?| Berhad)?(?=*)/g, '');
//         regex(/\|\s?publisher\s*\=\s*(?:\w+ )+(?:Media|Publishing|Publications)(?: Group(?:,? Inc\.)?| Berhad)(?=*)/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*\ Nast(?: Publications|)|Daily Mail and General Trust|Devin Lazrine|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| Ltd|Limited|)(?:\|\}]*|)\]\]*(?=)/gi, '');
         regex(/\|\s?publisher\s*\=\s*\?Reuters)?(?: Corporation| Plc.?|)|Singapore Press Holdings|Torstar|Time Inc\.|Times Publishing|Tribune|Vox Media|Washington Post|World Publishing|Ziff Davis Media)(?: Co(?:mpany|\.)?)?\]\](?=*)/g, '');
         regex(/\|\s?publisher\s*\=\s*\\](?=*)/g, '');
//         regex(/\|\s?publisher\s*\=\s*\\](?=*)/g, ''); 

         regex(/\| ?publisher ?= ?Star Publications \(Malaysia\)|\\] ?/gi, '');
         regex(/\| ?publisher ?= ?(?: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 ?|)\w*(?: \w*|)) \((South Africa)(?:n newspaper|)\)(*)/g, '$1|location=$2$3');
         regex(/(''(?:The ?|)\w*(?: \w*|)) \((South Africa)(?:n newspaper|)\)('')/g, '$1$3$2');
         regex(/(\\w*(?: \w*|)))( \(South Africa(?:n newspaper|)\))(\]\]?)/g, '$1$3|$2$4');
         regex(/(\|)((?:The ?|)\w*(?: \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(/(\\])/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(/(\\])/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(/(''\\]'')/g, '$1$2'); //non-standard code
         regex(/(=*\\]*\|)/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(/(''\\]'')/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(/(''\\]'')/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(/(''\\]'')/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(/(''\\]'')/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(/(\\])/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(/(\\])/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) ?(\|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. ])

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

// removing redundancies
         regex(/ – (?:Times of India|Rediff.com *)(?=?\|)/gi, '');
         regex(/(?: + *Times Of India|)(\]. +''The Times of India''\.)indiatimes\.com/gi, '$1');
         regex(/(?: + *(+))(\|\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(/- *\.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|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)(?=*)/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)(?=*)/g, '|work=\'\'$1\'\'$2');
//         regex(/\|\s?publisher\s*\=\s*(BBC (?:Sports|News))\s*(?=\|*|)/g, '|work=\'\'$1\'\'');
         
         regex(/\|\s?(?:publisher|website|work)\s*\=\s*(Metacritic|\\])\s*(\|*|)\|\s?publisher\s*\=\s*(CBS Interactive|\\])(?=*)/g, '|publisher=$1$2');

    //rem duplicated publishers in separate fields (post); rem preceding nbsp
		regex(/\s?&nbsp;\s?(\|\s*(?:agency|publisher|work)\s*\=\s*)/gi, ' $1');
		regex(/(?:+|&#124;)\s*(?:The |)({3,})(?:\.com|)\s*(\|\s*(?:agency|publisher|work)\s*\=\s*)\1(?=\s*)/gi, '$2$1');
		regex(/(?:+|&#124;)\s*({3,})(?:\.com|)\s*(\|\s*(?:agency|publisher|work)\s*\=\s*)(The |)\1(?=\s*)/gi, '$2$3$1');

//per ]

// toggling domains within |website= parameter
//		 regex(/(\|\s*(?:work|website)\s*\=\s*)(\w+\.(?:com?|org|net|gov|ac|)(?:\.{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*(?:\]*\]\]|*))(?=*)/g, '$3$1$2');
         regex(/(\|\s*website\s*\=\s*(?:\]*\]\]|*))(\s?\|*|)(\|\s*work\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|\\])\.?(?=\s*)/g, '|work=$1$2'); //unlinked work
         regex(/\|\s?work\s*\=\s*\]*)\]\](\|*|)\|\s?publisher\s*\=\s*(?:\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|\\])\.?(?=\s*)/g, '|publisher=$1$2'); //unlinked work
         regex(/\|\s?publisher\s*\=\s*\]*)\]\](\|*|)\|\s?publisher\s*\=\s*(?:\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)(?=*)/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(/(?:&#124; (?:Daily|English|(?:Mail |)Online|Music|News|Indian Express))(?=\s*\|)+/gi, ''); //|=: Video Gaming & Real Talk - PS4, Xbox One, Switch, PC, Handheld, Retro

         regex(/(?:(?:+&#124;+HighBeam Research++FREE trial+|)\|publisher=Highbeam.com)/gi, '|via=Highbeam');
         regex(/( &#124; *?)(?=&#124)/gi, '');
         regex(/( &#124; Comment is free)/gi, '');
         regex(/\|\s?title\s*\=\s*BBC (?:News|Sport)\s?(?:|&#124; )\s?/gi, '|title=');
         regex(/\|\s?title\s*\=\s*Asia Times Online\s?(?:|&#124; |:+)\s?/gi, '|title=');
         regex(/(?:Entertainment|Football|(?:inter|)national|Latest|local|Music|UK|world|) News &#124;(?=?)/gi, '');
         regex(/(?:|&#124;)*(?:Entertainment|Football|(?:inter|)national|Latest|local|Music|UK|world|) News(?=?)/gi, '');
         regex(/<!-- Bot generated title -->/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(/(+\'\')\.(?: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(/((?:eferences|otes)?={2,4})*<div (?:style|class)=*>(*)<\/div>/g, '$1$2'); 	
		regex(/<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(/(<ref name=*)>(\{\{*\}\})(*)\1>\2<\/ref>(*)\1>\2<\/ref>(*)\1>\2<\/ref>/gi, '$1>$2$3$1/>$4$1/>$5$1/>'); 
	    regex(/(<ref name=*)>(\{\{*\}\})(*)\1>\2<\/ref>(*)\1>\2<\/ref>/gi, '$1>$2$3$1/>$4$1/>'); 
	    regex(/(<ref name=*)>(\{\{*\}\})(*)\1>\2<\/ref>/gi, '$1>$2$3$1/>'); 
		regex(/(<ref name=*)><\/ref>/gi, '$1/>');
	    regex(/(<ref name=*)>(*)\1>(*)\1>(*)/gi, '$1A>$2$1B>$3$1C>$4');
//        regex(/(<ref name=*)>(*)\1>/gi, '$1A>$2$1B>');
//        regex(/(<ref name="*)">(*)\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)=*?)\]+?\|)(+?)\]\](?:(,? )\]+?)\]\]|)({0,1})/gi, '$1$2$3$4$5');

//rem other linking within refs tags
         regex(/(<ref*>+?\.,;]\s+)\<]*\||)(<]*)(?: online|)\]\](*?<\/ref>)\) \./gi, '$1$2$3).');
         regex(/(<ref*>+?\.,;]\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(/⍌(+)⍍/g, function(x, n) {
        var res = linkmap;
        res = res.replace(/⍌(+)⍍/g, function(x, n) {
            var res = linkmap;
            res = res.replace(/⍌(+)⍍/g, function(x, n) {
                var res = linkmap;
                res = res.replace(/⍌(+)⍍/g, function(x, n) {
                    return linkmap;
                });
                return res;
            });
            return res;
        });
        return res;
    });
}

/** ------------------------------------------------------------------------ **/
function Ohc_Source_edit_summary(){
	//Add a tag to the summary box
         setoptions(minor='true');
         setreason(']-assisted fixes: per ] and ]', '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(/<ref*>*\|*url ?= ?https?:\/\/(?:\w{2}\.wikipedia\.org\/wiki|(?:www\.|)(?:blogger|blogspot|facebook|findagrave|instagram|mailonline|myspace|twitter)\.com)\/*<\/ref>/gi, '');
	regex(/<ref>https?:\/\/(?:en\.wikipedia\.org\/wiki|(?:www\.|)(?:blogger|blogspot|facebook|findagrave|instagram|mailonline|myspace|twitter)\.com)\/<]*<\/ref>/gi, '');
	regex(/<ref>\]*+]*\]<\/ref>/gi, '');
	regex(/\|*url*=*https?:\/\/(?:\w{2}\.wikipedia\.org\/wiki|(?:www\.|)(?:blogger|blogspot|facebook|findagrave|instagram|mailonline|myspace|twitter)\.com)*(?=*)/gi, '');


	regex(/\]*+(]*)\]/gi, ' ]');

}

function ohc_ref_names() {
// give names to citations in templates that are without names
	regex(/<ref>((?:+\"?\+\.)*(\w+)\.(?:(?:com?|org|net|gov|ac)(?:\.{2}|))\/(?:*\D|)(\d{6,12})*)(?=<\/ref>)/gi, "<ref name=$2_$3>$1"); //urls with non-date serial numbers
	regex(/<ref>((?:*\|\s*url\s*=|?)https?:\/\/(?:+\.)*(\w+)\.(?:(?:com?|org|net|gov|ac)(?:\.{2}|))\/(?:*\D|)(\d{6,12})*)(?=<\/ref>)/gi, "<ref name=$2_$3>$1"); //urls with non-date serial numbers
	regex(/<ref>((?:*\|\s*url\s*=|?)https?:\/\/(?:+\.)*(+)(?:\.{2})\/*(\d{6,12})*)(?=<\/ref>)/gi, "<ref name=$2_$3>$1"); //urls with non-date serial numbers

	regex(/<ref>((?:*\|\s*url\s*=|?)https?:\/\/(?:+\.)*(reuters)\.com\/*(id\w{11})*)(?=<\/ref>)/gi, "<ref name=$2_$3>$1"); //reuters urls with non-date serial numbers
	
	ohc_regex(/<ref>((?:*\|\s*url\s*=|?)https?:\/\/(?:+\.)*(+)(?:\.{2,3})\/*@YYYY@MM@DD\/(\w+)*)(?=<\/ref>)/gi, "<ref name=$2_@Year@ZM@ZD_$3>$1"); //urls with non-date serial numbers
	ohc_regex(/<ref>((?:*\|\s*url\s*=|?)https?:\/\/(?:+\.)*(+)(?:\.{2,3})\/*@YYYY@Mon@DD\/(\w+)*)(?=<\/ref>)/gi, "<ref name=$2_@Year@ZM@ZD_$3>$1"); //urls with non-date serial numbers

    ohc_regex(/<ref>(*\|\s*url\s*=https?:\/\/(?:+\.)*(\w+)\.(?:(?:com?|org|net|gov|ac|)(?:\.{2}|))\/*\|\s*date\s*=\s*@Day @Month @YYYY\s**)(?=<\/ref>)/gi, "<ref name=$2_@Year@ZM@ZD>$1");
    ohc_regex(/<ref>(*\|\s*url\s*=https?:\/\/(?:+\.)*(\w+)\.(?:(?:com?|org|net|gov|ac|)(?:\.{2}|))\/*\|\s*date\s*=\s*@Month @Day, @YYYY\s**)(?=<\/ref>)/gi, "<ref name=$2_@Year@ZM@ZD>$1"); //this line may cause unwarranted substitution of "$5" by a comma (e.g. in 2019–20 Hong Kong protests)
    ohc_regex(/<ref>(*\|\s*url\s*=https?:\/\/(?:+\.)*(\w+)\.(?:(?:com?|org|net|gov|ac|)(?:\.{2}|))\/*\|\s*date\s*=\s*=\s*@YYYY-@MM-@DD\s**)(?=<\/ref>)/gi, "<ref name=$2_@Year@ZM@ZD>$1");
	ohc_regex(/<ref>((?:*\|\s*url\s*=|\+\.)*(\w+)\.(?:(?:com?|org|net|gov|ac|{2})(?:\.{2}|))\/+@YYYY?@Month?@Day*)(?=<\/ref>)/gi, "<ref name=$2_@Year@ZM@ZD>$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' ),  ) !== -1 ){
	$.when(
		$.ready,
		mw.loader.using( 'mediawiki.util' ),
		/*************
		*** Regex menu framework
		*** by ] <http://meta.wikimedia.org/User:Pathoschild/Scripts/Regex_menu_framework>
		***    - adds a sidebar menu of user-defined scripts.
		*************/
		$.ajax(
			'//meta.wikimedia.org/search/?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', '', '');
  }
});
// </nowiki>
User:Ohconfucius/test/Sources.js Add topic