MediaWiki:Gadget-libExtraUtil.js: Difference between revisions
Content deleted Content added
m Evad37 moved page MediaWiki:Gadget-extra.js to MediaWiki:Gadget-libExtraUtil.js without leaving a redirect: more descriptive gadget name, per WP:IANB#XFDcloser gadgetification |
Drop polyfills per request |
||
(5 intermediate revisions by 2 users not shown) | |||
Line 5:
* | Please discuss changes on the talk page or on [[WT:Gadget]] before editing. |
* |_____________________________________________________________________________|
*
* ###############################################################################
* # #
* # This script has unit tests on its /testcases.js subpage. Please install #
* # the WikiUnit script [[User:Evad37/WikiUnit]] and run tests before saving. #
* # #
* ###############################################################################
*
* Imported from version 924857650 as of 14 November 2019 from [[User:Evad37/extra.js]]
* Common helper functions (created for XFDcloser,
* Author: Evad37
*
Line 17 ⟶ 24:
// <nowiki>
window.extraJs = { version: '2.
/**
Line 51 ⟶ 34:
*
* @param {string} code
* First
* @param {jQuery.jqXHR} jqxhr
* Second
* @return {string} Error message details, with in a format like
* "(API|HTTP) error: details"
Line 398 ⟶ 381:
var numUnclosed = 0;
// are we inside a comment, or between nowiki tags, or in a {{{parameter}}}?
var inComment = false;
var inNowiki = false;
var inParameter = false;
var startIdx, endIdx;
Line 406 ⟶ 390:
for (var i=0; i<n; i++) {
if ( !inComment && !inNowiki && !inParameter ) {
if (wikitext[i] === '{' && wikitext[i+1] === '{' && wikitext[i+2] === '{' && wikitext[i+3] !== '{') {
inParameter = true;
i += 2;
} else if (wikitext[i] === '{' && wikitext[i+1] === '{') {
if (numUnclosed === 0) {
startIdx = i+2;
Line 432 ⟶ 419:
}
} else { // we are in a comment or nowiki or {{{parameter}}}
if (wikitext[i] === '|') {
// swap out pipes with \1 character
Line 442 ⟶ 429:
inNowiki = false;
i += 8;
} else if (wikitext[i] === '}' && wikitext[i+1] === '}' && wikitext[i+2] === '}') {
inParameter = false;
i += 2;
}
}
Line 452 ⟶ 442:
})
.filter(function(templateWikitext) {
return /\{\{(?:.|\n)*\}\}/.test(templateWikitext);
})
.map(function(templateWikitext) {
Line 752 ⟶ 742:
}
// Mark any other list items with backlinks for manual review, using {{subst:void}}
var manual_review_regex = new RegExp(
'^(\\*+.*)( simple_regex_str.replace(/([^\\])\(([^?])/g, "$1(?:$2") + // replace capturing groups with non-capturing groups
named_regex_str + ').*$', 'gm' );▼
'|' +
wikitext = wikitext.replace(manual_review_regex, '{{subst:void}}$&');▼
named_regex_str.replace(/([^\\])\(([^?])/g, "$1(?:$2") + // replace capturing groups with non-capturing groups
▲ wikitext = wikitext.replace(manual_review_regex, '{{subst:void}}$
// For all other links, replace with unlinked text
|