User:Zackmann08/addcheckforunknownparameters.js

// // Shamelessly copied from User:Frietjes/addcheckforunknownparameters.js jQuery(document).ready(function($) {

if(mw.config.get('wgNamespaceNumber') != -1 && document.getElementsByName('wpTextbox1')[0]) { mw.loader.using(['mediawiki.util']).done( function {		var portletlink = mw.util.addPortletLink('p-tb','#','Chk4unkwn','t-cfu');		$(portletlink).click(function(e) { e.preventDefault; wpBuildCheckForUnknownParameters; });	}); } // // function wpBuildCheckForUnknownParameters {	var templateTitle = document.title; templateTitle = templateTitle.replace(/Editing\sTemplate\:(.*)\s\-\sWikipedia.*/, ""); var dummy = $(' ').val(templateTitle).appendTo('body').select document.execCommand('copy')

var mycontent = document.getElementById('wpTextbox1'); // Copy the contents of the text window so we can modify it without problems var mytxt = mycontent.value; var mytxt2 = mycontent.value; // Make sure we haven't already done this before if(mytxt.search(/\{\{#invoke:[Cc]heck[_ ]+for[_ ]+unknown[_ ]+parameters/g) >= 0 ) { alert('Already added, aborting ...'); return; } // Remove {PAGENAME}, {BASEPAGENAME}, ... mytxt = mytxt.replace(/\{\{(?:PAGENAME|BASEPAGENAME|FULLPAGENAME|CURRENTYEAR)\}\}/g, ''); // Remove and mytxt = mytxt.replace(/<(?:span|nowiki)[ ]*\/>/gi, ''); // Excaped table markup mytxt = mytxt.replace(/([\r\n])\{(\{\{)(!\}\})/g, '$1$2($3'); mytxt = mytxt.replace(/([\r\n]\{\{!)(\}\})\}[\t ]*([\r\n])/g, '$1)$2$3'); // Replace some braces mytxt = mytxt.replace(/([^\{])\{([^\{])/g, '$1&#123;$2'); mytxt = mytxt.replace(/([^\}])\}([^\}])/g, '$1&#125;$2'); // Remove newlines and tabs which confuse the regexp search mytxt = mytxt.replace(/[\s]/gm, ' '); // Compress whitespace mytxt = mytxt.replace(/[\s][\s]+/gm, ' '); // Remove some HTML comments mytxt = mytxt.replace(//gm, ''); // Remove some includeonly tags mytxt = mytxt.replace(/<\/?includeonly>/gm, ''); // Remove some noinclude sections mytxt = mytxt.replace(/ (?:[^<>]|<\/?[^n][^<>]*>)*<\/noinclude>/gm, ''); // Compress more whitespace mytxt = mytxt.replace(/\|[\s]+/g, '|'); mytxt = mytxt.replace(/(\{\{[^\{\}\|]*)[\s]+(\||\}\})/g, '$1$2'); // Remove wikilinks to make patterns less complicated mytxt = mytxt.replace(/\[\]*)/g, '$1₳₳'); mytxt2 = mytxt2.replace(/[\s]+₳/g, '₳');  // Now start extracting the parameters  var plist = []; var klist = {}; var loopcount = 0;  while( (mytxt.search(/[^{}]/gm) >= 0) && (loopcount < 16) ) {    var p = mytxt.match(/(\{\{\{[^{}\|]*\|?[^\{\}\|=]*\}\}\})/g);    if( p ) {       for(var j=0; j<p.length; ++j) {           p[j] = p[j].replace(/\{\{\{([^{}\|]*)\|?[^\{\}\|=]*\}\}\}/g, '$1');           p[j] = p[j].replace(/^[\s]+/, );           p[j] = p[j].replace(/[\s]+$/, );           p[j] = p[j].replace(/([\(\)])/g, '\\$1');           var r = new RegExp("\\{\\{\\{[\\s]*" + p[j].replace(/\?/g, '\\?') + "\\|?[^\\{\\}\\|=]*\\}\\}\\}", 'g');           mytxt= mytxt.replace(r, );           p[j] = p[j].replace(/\\/g, );           if( klist[p[j == undefined ) { klist[p[j]] = mytxt2.indexOf('{{{' + p[j] + '₳₳'); plist.push(p[j]); }       }        // Remove templates, parserfunctions, and other double brace expressions mytxt = mytxt.replace(/([^\{])\{\{[^{}]*\}\}/gm, '$1'); mytxt = mytxt.replace(/\{\{[^{}]*\}\}([^\}])/gm, '$1'); mytxt = mytxt.replace(/([^\{])\{\{(?:[\r\n]|[^{}]|\{\{[^{}]*\}\})*\}\}/gm, '$1'); mytxt = mytxt.replace(/\{\{(?:[\r\n]|[^{}]|\{\{[^{}]*\}\})*\}\}([^\}])/gm, '$1'); }   loopcount++; } if( mytxt.search(/[\{\}]/gm) >= 0 ) { alert('Did not finish processing: ' + mytxt); } else { alert('Found ' + plist.length + ' unique keys'); } var alphasort = confirm('Sort parameters alphabetically?'); // Sort if(alphasort === true) { plist.sort(function (a, b) {  		aa = a.replace(/([^0-9])([0-9][^0-9]*)$/, '$10$2');  		bb = b.replace(/([^0-9])([0-9][^0-9]*)$/, '$10$2');  		return aa.toLowerCase.localeCompare(bb.toLowerCase) }); } else { plist = plist.sort(function(a,b) { return klist[a] - klist[b] } ); } myfullpagename = mw.config.get('wgPageName'); myfullpagename = myfullpagename.replace(/_/g, ' '); myfullpagename = myfullpagename.replace(/\/sandbox$/, ''); mypagename = myfullpagename.replace(/^Template:/, ''); mypagename = mypagename.charAt(0).toLowerCase + mypagename.slice(1); mypagename = mypagename.replace(/^wikiProject/, 'WikiProject'); // Finally, build the blank template mytxt = '{' + '{#invoke:' + 'Check for unknown parameters|check|unknown=' + '{' + '{main other|[' + '[Category:Pages using ' + mypagename + ' with unknown parameters' + '|_VALUE_{' + '{PAGENAME}' + '}]' + ']}' + '}|preview=Page using [' + '[' + myfullpagename + ']' + '] with ' + 'unknown parameter "_VALUE_"|ignoreblank=y'; for(var k=0; k])*<\/noinclude>)(\{\{#invoke:Check for unknown parameters(?:\{\{(?:\{\{[^{}]*\}\}|[^{}])*\}\}|[^{}])*\}\})/gi, '$2$1'); mycontent.value = mycontent.value.replace(/([\r\n \t][\r\n \t]*)(\{\{#invoke:Check for unknown parameters(?:\{\{(?:\{\{[^{}]*\}\}|[^{}])*\}\}|[^{}])*\}\})/gi, '$2$1');

mysummary = 'Adding unknown parameter tracking through [' + '[:Category:Pages using ' + mypagename + ' with unknown parameters]]' + ' using Module:check for unknown parameters'; var editsummary = document.getElementsByName('wpSummary')[0]; if(typeof editsummary == 'object') { if (editsummary.value.indexOf(mysummary) == -1) { if (editsummary.value.match(/[^\*\/\s][^\/\s]?\s*$/)) { editsummary.value += '; ' + mysummary; } else { editsummary.value += mysummary; }     }    } } //  // }); //