// <nowiki> to prevent interpretation of template syntax
/* begin stuff copied from ], who copied it from ] and amended it */
function minorFormat() {
//subst: useless templates
txt = txt.replace(/\{\{fr-adj-(al|en|eux)\|/gi, "{"+"{subst:fr-adj-$1|");
txt = txt.replace(/\{\{(plural|singular)\}\}/gi, "{"+"{subst:$1}}");
//Convert infl to language-specific template
txt = txt.replace(/\{\{infl\|(de|es|fr|it)\|adverb\}\}/gi, "{{$1-adv}}");
txt = txt.replace(/\{\{infl\|(de|en|es|fr|pt)\|proper noun\}\}/gi, "{{$1-proper noun}}");
txt = txt.replace(/\{\{infl\|(de|fr|it)\|verb\}\}/gi, "{{$1-verb}}");
txt = txt.replace(/\{\{infl\|en\|adjective\}\}/gi, "{{en-adj|?}}");
txt = txt.replace(/\{\{infl\|en\|adverb\}\}/gi, "{{en-adv|?}}");
txt = txt.replace(/\{\{infl\|en\|conjunction\}\}/gi, "{{en-con}}");
txt = txt.replace(/\{\{infl\|en\|noun\}\}/gi, "{{en-noun|?}}");
txt = txt.replace(/\{\{infl\|fr\|adjective form\}\}/gi, "{{fr-adj-form}}");
txt = txt.replace(/\{\{infl\|fr\|preposition\}\}/gi, "{{fr-prep}}");
txt = txt.replace(/\{\{infl\|(es|fr|pt)\|verb form\}\}/gi, "{{$1-verb-form}}");
//Cyrillic script
txt = txt.replace(/\{\{infl\|(ba|be|ce|bg|kk|ky|lez|mk|ru|uk)\|noun(\}\}|\|tr=|\|g=)/gi, "{{$1-noun$2");
txt = txt.replace(/\{\{infl\|(bg|ru)\|proper noun(\}\}|\|tr=|\|g=)/gi, "{{$1-proper noun$2");
txt = txt.replace(/\{\{en\-(adj|adv|noun|plural\-noun|pronoun|verb|verb form)\|(current|pos|sg)=/gi, "{{en-$1|head=");
//Merge gender and number templates
txt = txt.replace(/\{\{m\}\} \{\{s\}\}/gi, "{{g|m}}");
txt = txt.replace(/\{\{m\}\} \{\{p\}\}/gi, "{{g|m-p}}");
txt = txt.replace(/\{\{m\}\} \{\{f\}\}/gi, "{{g|m|f}}");
txt = txt.replace(/\{\{f\}\} \{\{s\}\}/gi, "{{g|f}}");
txt = txt.replace(/\{\{f\}\} \{\{p\}\}/gi, "{{g|f-p}}");
txt = txt.replace(/\{\{n\}\} \{\{p\}\}/gi, "{{g|n-p}}");
txt = txt.replace(/\{\{n\}\} \{\{s\}\}/gi, "{{g|n}}");
txt = txt.replace(/\{\{m\}\} \{\{f\|p\}\}/gi, "{{g|m-p|f-p}}");
txt = txt.replace(/\{\{m\|f\}\} \{\{p\}\}/gi, "{{g|m-p|f-p}}");
txt = txt.replace(/\{\{m\}\} \{\{inv\}\}/gi, "{{g|m}}");
txt = txt.replace(/\{\{f\}\} \{\{inv\}\}/gi, "{{g|f}}");
txt = txt.replace(/\{\{m\}\} \{\{f\|inv\}\}/gi, "{{g|m|f}}");
txt = txt.replace(/\{\{m\|f\}\} \{\{inv\}\}/gi, "{{g|m|f}}");
//Convert *: to * before { {audio}}, { {homophones}}, { {IPA}} and { {rhymes}}
txt = txt.replace(/\*\: \{\{(audio|homophones|IPA|rhymes)(\||\})/gi, "* {{$1$2");
//Replace obsolete IPA characters
txt = txt.replace(/ʣ/gi, "dz");
txt = txt.replace(/ʤ/gi, "dʒ");
txt = txt.replace(/ʥ/gi, "dʑ");
txt = txt.replace(/ʧ/gi, "tʃ");
txt = txt.replace(/ʦ/gi, "ts");
txt = txt.replace(/ʨ/gi, "tɕ");
//Fix 123abc Mandarin stuff
txt = txt.replace(/\|sim\|/gi, "|simplified|");
txt = txt.replace(/\|tra\|/gi, "|traditional|");
txt = txt.replace(/\|tra\&sim\|/gi, "|traditional and simplified|");
//Adding { {qualifier}}. In some cases, you'll want to switch qualifier to context or gloss
txt=txt.replace(/\(''(*)''\)/g, "{{qualifier|$1}}");//converts (''foo'') to {{qualifier|foo}}
txt=txt.replace(/''\((*)\)''/g, "{{qualifier|$1}}");//converts ''(foo)'' to {{qualifier|foo}}
txt=txt.replace(/\{\{qualifier\|(*)\}\}\:/g, "{{sense|$1}}");//converts {{qualifier|foo}}: to {{sense|foo}}
txt = txt.replace(/''British''/gi, "{{qualifier|British}}");
txt = txt.replace(/''UK''/gi, "{{qualifier|UK}}");
txt = txt.replace(/''US''/gi, "{{qualifier|US}}");
//Remove wikilinks from some common form of templates, but not piped links
txt = txt.replace(/\{\{(+) of\|\+)\]\](\||\}\})/gi, "{{$1 of|$2$3");
//Actual { {form of}}
txt = txt.replace(/\{\{form of\|(+)\|\+)\]\](\||\})/gi, "{{form of|$1|$2$3");
//Convert { {etyl|la|en}} to { {etyl|la}} (la being an example for Latin in this case). Only works for 2 or 3 letter codes, with no extra parameters like sort
// txt = txt.replace(/\{\{etyl\|({2,3})\|en\}\}/gi, "{"+"{etyl|$1}}");
//Add { {homophones}}
txt=txt.replace(/()omophones\: \+)\]\]/g, "{"+"{homophones|$2}}");
//If two
txt=txt.replace(/\{\{homophones\|(+)\}\}, \+)\]\]/g, "{"+"{homophones|$1|$2}}");
//Add lang=en to several templates. Change by hand if required
txt = txt.replace(/\{\{(defn|etystub|rfc|rfd|rfe|rfp|rfap|rfdef|rfv|rfv\-etymology|rfv\-pronunciation)\}\}/g, "{{$1|lang=en}}");
//Put { {wikipedia}} under ==English== header, not above it
txt=txt.replace(/\{\{wikipedia\}\}\n==English==/g, "==English==\n{{wikipedia}}");
txt=txt.replace(/\{\{wikipedia\}\}\n=/g, "{{wikipedia}}\n\n=");
//Serbo-Croatian stuff. Official with respect to categories (no Bosnian, Croatian or Serbian categories) but unofficial elsewhere.
txt=txt.replace(/\{\{hr\-noun\|/g, "{{sh-noun|r|g=");
//Text replacement other than replacing headers and template redirects, which come later on
txt = txt.replace(/\ \n/g, "\n");
txt = txt.replace(/\=\= /g, "==");
txt = txt.replace(/ \=\=/g, "==");
txt = txt.replace(/\n\n\n/g, "\n\n");
txt = txt.replace(/==\n==/g, "==\n\n==");
txt = txt.replace(/\-\-\-\-\n=/g, "----\n\n=");
txt = txt.replace(/==\n\n()/g, "==\n$1");
txt = txt.replace(/\n\=(\=*)(*)(\=*)\<\!/g, "\n=$1$2$3\n<!");
txt = txt.replace(/===\n\'\'\'(.*)\'\'\'\n#/gi, "===\n'''$1'''\n\n#");
txt = txt.replace(/===\n\{\{(.*)\}\}\n#/gi, "===\n{{$1}}\n\n#");
txt = txt.replace(/\{\{PAGENAME\}\}/gi, "{"+"{subst:PAGENAME}}");
txt = txt.replace(/ ''m''/g, " {{g|m}}");
txt = txt.replace(/''m'' /g, "{{g|m}} ");
txt = txt.replace(/ ''f''/g, " {{g|f}}");
txt = txt.replace(/''f'' /g, "{{g|f}} ");
txt = txt.replace(/ ''n''/g, " {{g|n}}");
txt = txt.replace(/''n'' /g, "{{g|n}} ");
txt = txt.replace(/ ''c''/g, " {{g|c}}");
txt = txt.replace(/''c'' /g, "{{g|c}} ");
txt = txt.replace(/ ''pl''/g, " {{g|p}}");
txt = txt.replace(/''pl'' /g, "{{g|p}} ");
txt = txt.replace(/ ''s''/g, " {{g|s}}");
txt = txt.replace(/''s'' /g, "{{g|s}} ");
txt = txt.replace(/''m, f''/g, "{{g|m|f}}");
txt = txt.replace(/\{\{mf\}\}/g, "{{g|m|f}}");
txt = txt.replace(/''m pl''/g, "{{g|m-p}}");
txt = txt.replace(/''f pl''/g, "{{g|f-p}}");
txt = txt.replace(/''m plural''/g, "{{g|m-p}}");
txt = txt.replace(/''f plural''/g, "{{g|f-p}}");
txt = txt.replace(/\*(\ *)'''(*)'''\:/g, "* '''$2''',");
txt = txt.replace(/\*(\ *)'''(*)\:'''/g, "* '''$2''',");
txt=txt.replace(/\ (\ *)/g, " ");
txt=txt.replace(/\n(+)(\ *)()/g, "\n$1 $3");//Thanks, Conrad.Irwin.
txt=txt.replace(/\n\{\{template\:PL\:/g, "\n* {"+"{template:PL:");//as previous
txt=txt.replace(/\n\{\{pedia()/g, "\n* {{pedia$1");
txt=txt.replace(/\n\{\{versity()/g, "\n* {{versity$1");
txt=txt.replace(/\{\{form\ of\|(\(\)\"\/]*)\ of\|/g, "{"+"{form of|$1|");
txt=txt.replace(/\{\{defn()/g, "{"+"{rfdef$1");//straight swap
txt=txt.replace(/\{\{onym()/g, "{"+"{l$1");//straight swap
txt = txt.replace(/lang=Italian/gi, "lang=it");
txt = txt.replace(/(first|First|second|Second|third|Third) person (singular|plural)/gi, "$1-person $2");
txt = txt.replace(/Sinhala/gi, "Sinhalese");//Common misuse of secondary language name
txt = txt.replace(/\[\[(WS|WikiSaurus)\:/gi, "[[Wikisaurus:");
txt = txt.replace(/\#\:\*/gi, "#:");
//Redirect snaps for non-context labels. Only works when editing an entire page, not a section
//Uses a fairly simple regex system, thus can occasionally cause problems. If so, do section editing only
//Achieves not a lot, slows down editing, and has to be updated any time one of these templates is renamed
txt=txt.replace(/\{\{alt spell\|/g, "{"+"{alternative spelling of|");
txt=txt.replace(/\{\{alternate form of\|/g, "{"+"{alternative form of|");
txt=txt.replace(/\{\{alternate spelling of\|/g, "{"+"{alternative spelling of|");
txt=txt.replace(/()R\:ANOLH()/g, "$1R:Anglo-Norman On-Line Hub$2");
txt=txt.replace(/()bottom2()/g, "$1bottom$2");
txt=txt.replace(/()(checktrans\-mid|reqtrans\-mid|ttbc\-mid)()/g, "$1trans-mid$3");
txt=txt.replace(/()(checktrans\-bottom|reqtrans\-bottom|ttbc\-bot|ttbc\-bottom)()/g, "$1trans-bottom$3");
txt=txt.replace(/\{\{(en|fr)\-adjective()/g, "{"+"{$1-adj$1");
txt=txt.replace(/\{\{(en|fr)\-adverb()/g, "{"+"{$1-adv$1");
txt=txt.replace(/\{\{en\-conjunction()/g, "{"+"{en-con$1");
txt=txt.replace(/\{\{en\-conj()/g, "{"+"{en-con$1");
txt=txt.replace(/\{\{en\-interjection()/g, "{"+"{en-interj$1");
txt=txt.replace(/\{\{en\-intj()/g, "{"+"{en-interj$1");
txt=txt.replace(/\{\{en\-particle()/g, "{"+"{en-part$1");
txt=txt.replace(/\{\{en\-preposition()/g, "{"+"{en-prep$1");
txt=txt.replace(/\{\{en\-plural\-noun()/g, "{"+"{en-plural noun$1");
txt=txt.replace(/\{\{en\-pronoun()/g, "{"+"{en-pron$1");
txt=txt.replace(/\{\{en\-adj\-more()/g, "{"+"{en-adj$1");
txt=txt.replace(/\{\{en\-proper\-noun()/g, "{"+"{en-proper noun$1");
txt=txt.replace(/\{\{eye dialect()/g, "{"+"{eye dialect of$1");
txt=txt.replace(/\{\{Flowbreak()/g, "{"+"{flowbreak$1");
txt=txt.replace(/\{\{fr\-pp()/g, "{"+"{fr-past participle$1");
txt=txt.replace(/\{\{fr\-verb form()/g, "{"+"{fr-verb-form$1");
txt=txt.replace(/\{\{i()/g, "{"+"{qualifier$1");
txt=txt.replace(/\{\{italbrac()/g, "{"+"{qualifier$1");//straight swap
txt=txt.replace(/\{\{i-c()/g, "{"+"{sense$1");
txt=txt.replace(/\{\{italbrac-colon()/g, "{"+"{sense$1");
txt=txt.replace(/\{\{non gloss definition()/g, "{"+"{non-gloss definition$1");
txt=txt.replace(/\{\{n\-g()/g, "{"+"{non-gloss definition$1");
txt=txt.replace(/\{\{PL\:pedia()/g, "{"+"{pedia$1");
txt=txt.replace(/\{\{pf\}\}/g, "{"+"{pf.}}");
txt=txt.replace(/\{\{see also\|/g, "{"+"{also|");
txt=txt.replace(/\{\{sic()/g, "{"+"{SIC$1");
txt=txt.replace(/\{\{sic\.()/g, "{"+"{SIC$1");
txt=txt.replace(/\{\{Wikipedia()/g, "{"+"{wikipedia$1");
txt=txt.replace(/\{\{Wikipedia-inline()/g, "{"+"{pedia$1");
txt=txt.replace(/\{\{xalso\|/g, "{"+"{xsee|");
//the next two lines have to be after the "alt spell" snap above
txt=txt.replace(/\n\#\ \{\{obsolete\}\}\ \{\{alternative spelling of\|/g, "\n# {"+"{obsolete spelling of|");
txt=txt.replace(/\n\#\ \{\{archaic\}\}\ \{\{alternative spelling of\|/g, "\n# {"+"{archaic spelling of|");
//Snapping context redirects
txt=txt.replace(/\{\{art\}\}/g, "{"+"{arts}}");
txt=txt.replace(/()Bible()/g, "$1biblical$2");
txt=txt.replace(/()carbohydrate()/g, "$1carbohydrates$2");
txt=txt.replace(/()christianity()/g, "$1Christianity$2");
txt=txt.replace(/()Colloquial()/g, "$1colloquial$2");
txt=txt.replace(/()communications()/g, "$1communication$2");
txt=txt.replace(/()Communication()/g, "$1communication$2");
txt=txt.replace(/()()omptheory()/g, "$1computing theory$3");
txt=txt.replace(/()computer()/g, "$1computing$2");
txt=txt.replace(/()computer programming()/g, "$1programming$2");
txt=txt.replace(/()computers()/g, "$1computing$2");
txt=txt.replace(/()euphemism()/g, "$1euphemistic$2");
txt=txt.replace(/()greek mythology()/g, "$1Greek mythology$2");
txt=txt.replace(/()GUI()/g, "$1graphical user interface$2");
txt=txt.replace(/()()diom()/g, "$1idiomatic$3");
txt=txt.replace(/(\{\{infl\|{2,3}\|)idiomatic()/g, "$1idiom$2");//converts { {infl|foo|idiomatic}} back to { {infl|foo|idiom}}
txt=txt.replace(/()indef()/g, "$1indefinite$2");
txt=txt.replace(/()in plural()/g, "$1in the plural$2");
txt=txt.replace(/()internet()/g, "$1Internet$2");
txt=txt.replace(/()jocular()/g, "$1humorous$2");
txt=txt.replace(/()Law()/g, "$1legal$2");
txt=txt.replace(/()()ath()/g, "$1mathematics$3");
txt=txt.replace(/()maths()/g, "$1mathematics$2");
txt=txt.replace(/()medical()/g, "$1medicine$2");
txt=txt.replace(/()Military()/g, "$1military$2");
txt=txt.replace(/()musici()/g, "$1musical instruments$2");
txt=txt.replace(/()Nautical()/g, "$1nautical$2");
txt=txt.replace(/()Obsolete()/g, "$1obsolete$2");
txt=txt.replace(/()organic compound()/g, "$1organic compounds$2");
txt=txt.replace(/()planetary science()/g, "$1planetology$2");
txt=txt.replace(/()pluralia tantum()/g, "$1plurale tantum$2");
txt=txt.replace(/()police()/g, "$1law enforcement$2");
txt=txt.replace(/()()cifi()/g, "$1science fiction$3");
txt=txt.replace(/()space()/g, "$1space science$2");
txt=txt.replace(/()sport()/g, "$1sports$2");
txt=txt.replace(/()Theology()/g, "$1theology$2");
txt=txt.replace(/()theatre()/g, "$1theater$2");
//Redirect snaps based on dialects/regional vocabulary
txt=txt.replace(/()American()/g, "$1US$2");
txt=txt.replace(/()AU()/g, "$1Australia$2");
txt=txt.replace(/()Australian()/g, "$1Australia$2");
txt=txt.replace(/()Canadian()/g, "$1Canada$2");
txt=txt.replace(/()Canadian English()/g, "$1Canada$2");
txt=txt.replace(/()CockneyRS()/g, "$1Cockney rhyming slang$2");
txt=txt.replace(/()Indian()/g, "$1India$2");
txt=txt.replace(/()North American()/g, "$1North America$2");
txt=txt.replace(/()New Zealand English()/g, "$1New Zealand$2");
txt=txt.replace(/()NZ()/g, "$1New Zealand$2");
txt=txt.replace(/()Scottish()/g, "$1Scotland$2");
txt=txt.replace(/()Scottish English()/g, "$1Scotland$2");
txt=txt.replace(/()USA()/g, "$1US$2");
//A few redirects to non-categorizing template redirects
txt=txt.replace(/()figurative()/g, "$1figuratively$2");
txt=txt.replace(/()literal()/g, "$1literally$2");
txt=txt.replace(/()metaphorical()/g, "$1figuratively$2");
//Remove {{context| before some common labels; too many to list all of them. Must be listed here after redirect snaps
txt = txt.replace(/\{\{context\|(archaic|biology|botany|chemistry|colloquial|countable|formal|geography|geology|history|idiomatic|informal|intransitive|mathematics|music|obsolete|physics|slang|sports|transitive|UK|uncountable|US|vulgar)()/gi, "{{$1$2");
}
// get all the {-header-} templates replaced
function headLevel() {
txt = txt.replace(/==adjective form==/gi, "==Adjective==");
txt = txt.replace(/==alternative spellings==/gi, "==Alternative forms==");
txt = txt.replace(/==cardinal numeral==/gi, "==Cardinal number==");
txt = txt.replace(/==citations==/gi, "==Quotations==");
txt = txt.replace(/==derivation==/gi, "==Etymology==");
txt = txt.replace(/==note==/gi, "==Usage notes==");
txt = txt.replace(/==notes==/gi, "==Usage notes==");
txt = txt.replace(/==NOun==/gi, "==Noun==");
txt = txt.replace(/==noun form==/gi, "==Noun==");
txt = txt.replace(/==numeral==/gi, "==Number==");
txt = txt.replace(/==proper Noun==/gi, "==Proper noun==");
txt = txt.replace(/==ordinal numeral==/gi, "==Ordinal number==");
txt = txt.replace(/==reference==/gi, "==References==");
txt = txt.replace(/==translation==/gi, "==Translations==");
txt = txt.replace(/==usage==/gi, "==Usage notes==");
txt = txt.replace(/==variants==/gi, "==Alternative forms==");
txt = txt.replace(/==verb form==/gi, "==Verb==");
txt = txt.replace(/==chinese==/gi, "==Mandarin==");//Chinese will usually refer to Mandarin. If the templates aren't cmn, change by hand
//Fix User:2.125.74.117 stuff
txt = txt.replace(/==see Also==/gi, "==See also==");
txt = txt.replace(/\n====Also See====\n/gi, "{"+"{subst:blank}}");
//Header levels, L3 to L4
txt=txt.replace(/\n===(Antonyms|Coordinate terms|Derived terms|Descendants|Related terms|Synonyms|Translations|Usage notes)===\n/gi, "\n====$1====\n");
}
function langHdrs() {
txt=txt.replace(/\n==(=*)()/gi, "\n==$1$2".toUpperCase() );
txt=txt.replace(/==\+)\]\]==/g, "==$1==");
}
function langSubsts() {
txt=txt.replace(/()\{\{({2,3})\}\}/g, "$1{{subst"+":#ifexist:{{subst:"+"$2|l=}}|{{etyl|$2|-}}|{{"+"$2}}}}");
}
function wiktClickMyDiff() {
window.status = " has now been clicked.";
document.editform.wpDiff.click();
}
function superAutoFormat() {
// get page title
pagetitle = document.getElementById('content').getElementsByTagName('h1').item(0).firstChild.nodeValue;
//if (pagetitle.search(/Editing /) != 0) return;
switch(wgAction){case 'submit': case 'edit': break; default: return};
// is this in the main namespace? If not, stop.
if (wgNamespaceNumber) return;
// If editing a section, skip all of everything.
if (pagetitle.search(/\(section\)/) != -1) return;
txt = " " + document.editform.wpTextbox1.value;
txt = txt.substr (1, txt.length-1);
oldtxt = txt;
if (txt.length < 2) txt = " " + txt;
//safety valves
if (txt.search(/^#redirect \[/i) != -1) return;
minorFormat(); //minor format problems that must be dealt with first
langHdrs(); //swap out {-en-} and such
headLevel(); //correct known 3rd level heading level problems
langHdrs(); //correct known language heading level problems
langSubsts(); //subst: all the language templates
if (txt == " ") txt = "";
document.editform.wpTextbox1.value = txt;
if (txt != oldtxt) {
window.status = "...clicking the button...";
setTimeout( "wiktClickMyDiff();", 2000 );
if (document.editform.wpSummary.value) document.editform.wpSummary.value += ', ';
if (mw.config.get('wgCurRevisionId')) document.editform.wpSummary.value += 'fmt';
}
}
$( superAutoFormat );
// </nowiki>