Benutzer:Codeispoetry/regengine.js

Hinweis: Leere nach dem Veröffentlichen den Browser-Cache, um die Änderungen sehen zu können.

  • Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
  • Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
  • Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
/*global DOM, SimpleAjax, addOnloadHook, wgCanonicalNamespace, wgScript */var RegEngine = {regexe: [],init: function () {if(typeof SimpleAjax !== 'undefined') {SimpleAjax.get(wgScript + '?title=Benutzer:Codeispoetry/Kosmetika&action=raw', null, RegEngine.parseRegex);} else {mw.log.error('There is a dependency problem in how this gadget is loaded.');}},parseRegex: function (req) {var lines = req.responseText.split('\n');var curReg = null;for (var n = 0 ; n < lines.length ; ++n) {var line = lines[n].match(/^\s*(<\/?\s*[Pp][Rr][Ee]\s*>\s*|#.+|([^\s#]+):\s+(.+))?$/);if (!line) {throw "Error parsing file at line " + n + " (" + lines[n] + ')';} else if (line[2] && line[3]) {if (line[2] === 'RE') {var regmatch = line[3].match(/^\/(.*)\/(.*)$/);if (!regmatch) {throw "Error parsing file at line " + n + " (" + lines[n] + ')';}curReg = {};RegEngine.regexe.push(curReg);curReg.re = new RegExp(regmatch[1], regmatch[2]);} else if (line[2] === 'KO') {if (!curReg) {throw "no regex while trying to add target from line " + n;}regmatch = line[3].match(/^'(.*)'\s*$/);if (!regmatch) {throw "Error parsing file at line " + n + " (" + lines[n] + ')';}curReg.ko = regmatch[1].replace(/\\n/g, '\n');} else if (line[2] === 'QA') {if (!curReg) {throw "no regex while trying to add qa from line " + n;}curReg.qa = RegEngine.qaToHash(line[3]);} else {throw 'unidentified line at ' + n;}}}RegEngine.firstJob();},executeRegex: function (target, qa) {target = target || DOM.get('wpTextbox1');qa = qa || {auto: false};if (typeof qa.target === 'undefined')qa.target = (['', 'Category', 'Image'].indexOf(wgCanonicalNamespace) > -1) ? 0 : 1;for (var n = 0 ; n < RegEngine.regexe.length ; ++n) {if (RegEngine.regexe[n].qa.target >= qa.target && (!qa.auto || RegEngine.regexe[n].qa.auto)) {target.value = target.value.replace(RegEngine.regexe[n].re, RegEngine.regexe[n].ko);}}},qaToHash: function (str) {var items = str.split(', ');var hash = {};if (items.indexOf('seite') > -1) {hash.target = 1; //alle seiten} else {hash.target = 0; //textseiten}if (items.indexOf('automatisch') > -1) {hash.auto = true;} else {hash.auto = false;}return hash;},firstJob: function () {RegEngine.executeRegex(DOM.get('wpTextbox1'), {auto: true});}};$(RegEngine.init);