User:Closeapple/common.js

// Probably should merge/update User:Closeapple/RMFset.js into this someday; it has other complex TemplateScript regexes. /** * TemplateScript adds configurable templates and scripts to the sidebar, and adds an example regex editor. * @see https://meta.wikimedia.org/wiki/TemplateScript * @update-token */ // $.ajax('//tools-static.wmflabs.org/meta/scripts/pathoschild.templatescript.js', { dataType:'script', cache:true }).then(function {	var nowMajorEdit = false;	// Items should set this flag true whenever they make a major edit.	pathoschild.TemplateScript.add([ // add your own templates or scripts here { name: 'welcome', template: ' ~', position: 'after', editSummary: 'welcome!', forNamespaces: 'user talk' }, {			category: 'universal fixups', name: 'obvious fixes', tooltip: 'uncontroversial safe edits, like removing trailing spaces', // isMinorEdit: true,	// icky: makes TS force it even if no edit was made accessKey: ' ', script: function(editor) { old = editor.get; editor .replace(/\n?[ \t]*(\[\[)\s*(Category:[^\{\}\]]+\]\])/gim, "\n$1$2");	// all categories should have 1 newline and no horizontal spaces before; does not eat multiple newlines (because category blocks are supposed to be separated by a blank line) if (editor.get != old) { editor.appendEditSummary('spacing fixups'); }				editor .replace(/[ \t]+$/gm, '');	// trim trailing spaces if (editor.get != old) { if (!nowMajorEdit) { editor.options({ minor: true }); }				}			}		},		{			category: 'universal fixups', name: 'melt wikilinks', tooltip: 'links→links; remove insignificant link spaces', // isMinorEdit: true,	// icky: makes TS force it even if no edit was made script: function(editor){ old = editor.get; editor .replace(/\[\[\s*([^\s\{\}\|\]][^\{\|\]]+[^\s\{\}\|\]])\s*\|\s*\1(\w*)\]\]/g, "$1$2");	// links -> links; doesn't match capitalization difference on first character, which would also be a candidate for conversion if (editor.get != old) { editor.appendEditSummary('wikilink fixups'); if (!nowMajorEdit) { editor.options({ minor: true }); }				}			}		},		{			category: 'universal fixups', name: 'ref punct', tooltip: 'Move punctuation after refs. (Don\'t use if refs are followed by file extensions starting with .)', // isMinorEdit: true,	// icky: makes TS force it even if no edit was made script: function(editor){ old = editor.get; editor .replace(/([.?,:;]+)(["\)]*)\s*((?: *'*)+) *\1/gi, '$1$2$3')	// deduplicate same sentence punctuation before and after refs					.replace(/[,;]\s*((?: *'*)+) *\./gi, '.$1')	//, or ; before but . after refs, nearly always ends up being . before refs					.replace(/([\w"\)\]])\s*((?: *'*)+) *([.?,:;]+)/gi, '$1$3$2');	// sentence punctuation after refs goes before refs if (editor.get != old) { editor.appendEditSummary('ref punctuation'); if (!nowMajorEdit) { editor.options({ minor: true }); }				}			}		},		{			category: 'potential fixups', name: 'ref spacing', tooltip: 'Eliminates weird spacing around refs, both visible and invisible. (Avoids after = or 10k after .)', // isMinorEdit: true,	// icky: makes TS force it even if no edit was made script: function(editor){ old = editor.get; // The \{\{\s*reflist\b.{2,10000} bit in regex is to make it not match within 10,000 characters after the  tag, so that it doesn't try to reorganize the refs inside that tag. Maybe it should look for the refs= parametes in the reflist also. editor .replace(/(?<!=|\||\{\{\s*reflist\b.{2,10000})\s*]*)\s*>\s*/gi, '')	// start full ref, not after = or 					.replace(/(?<!\{\{\s*reflist\b.{2,10000})\s*<\s*\/\s*ref\s*>/gi, ' ')	// end full ref, not after = or 					.replace(/(?<!=|\|)\s*]*?\s?)\s*\/\s*>/gi, '');	// backreference; primitive attempt at retaining optional 1 space before /; not after = if (editor.get != old) { editor.appendEditSummary('ref spacing'); if (!nowMajorEdit) { editor.options({ minor: true }); }				}			}		}		// end of custom template/script additions for TemplateScript ]); }); //