User:Gerbrant/edit/autoReplace.js

new function {	var settings, libsToLoad = 1, multiR, regexR, self = this;

if(wgCanonicalNamespace == "Talk" ||		wgCanonicalNamespace.slice(-5) == "_talk") return;

try{ settings = Gerbrant.edit.autoReplace;  }catch(nosettings){} if(!settings) settings = {};

this.show = function {		regexR.replace(multiR.getRE, function(a)		{			return a != multiR.handler.apply(multiR, arguments);		}, multiR.handler); };	this.caption = "AutoReplace";

this.diag = function {		if(libsToLoad >= 0) alert("Couldn't load all libraries."); else alert("All libraries are loaded."); };

function libFinished {		if(--libsToLoad < 0) self.show; if(multiR && regexR) module("Gerbrant.edit.autoReplace", self); }

loadModule("Gerbrant.edit.multiReplace", function(mr)	{		var lib, i;		multiR = new mr;		libFinished;

function loadDefs(defs) {			var i, def; for(i in defs) {				def = defs[i]; multiR.add(def.re, def.hf); }		}

function loadReplLib(libName) {			libsToLoad++; loadModule(libName, function(defs)			{				loadDefs(defs);				libFinished;			}); }

if(!settings.noDefault) loadReplLib("Gerbrant.edit.autoReplace.default");

lib = settings.lib; if(lib) for(i in lib) loadReplLib(lib[i]);

lib = settings.defs; if(lib) loadDefs(lib); });

loadModule("Gerbrant.edit.regexReplace", function(rr)	{		regexR = rr;		libFinished;	}); }