_ _    _ _____  ___   __                       
 __      _(_) | _(_)___ / ( _ ) / /_   ___ ___  _ __ ___  
 \ \ /\ / / | |/ / | |_ \ / _ \| '_ \ / __/ _ \| '_ ` _ \ 
  \ V  V /| |   <| |___) | (_) | (_) | (_| (_) | | | | | |
   \_/\_/ |_|_|\_\_|____/ \___/ \___(_)___\___/|_| |_| |_|

Benutzer:Revolus/Datei-syntax-updater.js

In der heutigen Welt ist Benutzer:Revolus/Datei-syntax-updater.js ein ständig diskutiertes Thema, das Menschen jeden Alters und in allen Teilen der Welt betrifft. Seine Wirkung bleibt nicht unbemerkt und seine Relevanz für verschiedene Aspekte des täglichen Lebens ist unbestreitbar. Sowohl auf persönlicher als auch auf beruflicher Ebene hat Benutzer:Revolus/Datei-syntax-updater.js Diskussionen ausgelöst, war Gegenstand von Studien und hat das Interesse zahlreicher Experten geweckt. Im Laufe der Geschichte hat sich Benutzer:Revolus/Datei-syntax-updater.js weiterentwickelt und an soziale, politische und technologische Veränderungen angepasst, was die Art und Weise, wie wir den Herausforderungen der Gegenwart und der Zukunft begegnen, maßgeblich beeinflusst hat. In diesem Artikel werden wir die Auswirkungen von Benutzer:Revolus/Datei-syntax-updater.js eingehend untersuchen und seinen Einfluss in verschiedenen Kontexten analysieren, mit dem Ziel, seine Bedeutung und die Auswirkungen, die es auf die heutige Gesellschaft hat, besser zu verstehen.
/**
 * Aus ]
 * Einbinden mit    importScript("Benutzer:Revolus/Datei-syntax-updater.js");   in deine ]
 */

function rev_syntax() {
	var eb = document.getElementById("wpTextbox1");
	if(!eb || eb.getAttribute("readonly")) return;
	
	function vllt(s) { return "(?:" + s + ")?"; }
	function trim(s) { return "\\s*" + s + "\\s*"; }
	function link(s) { return "\\\\]"; }
	function extl(s) { return "\\"; }
	function oder(a) { return "(?:" + a.join("|") + ")"; }
	
	var plainZeichen = "\\{\\}]";
	var htmlZeichen  = "\\{\\}]";
	
	var dateiPattern    = "*"+ oder(", "", "", ""]) + "*:*" + "(" + plainZeichen + "+?)*";
	var extlinkPattern  = extl(plainZeichen+"+" + vllt(" "   + plainZeichen+"*"));
	var wikilinkPattern = link(plainZeichen+"+" + vllt("\\|" + plainZeichen+"*"));
	var paramPattern    = oder();
	
	var innerRegex = new RegExp(trim("(" + paramPattern + "*?)") + "(\\||$)", "g");
	var outerRegex = new RegExp(link(dateiPattern + vllt("\\|(" + vllt(oder()+"*") + ")")), "g");
	
	function bildHandler(_, file, attrs) {
		var nowiki = false;
		var texts = ;
		
		var attribute = {
			"miniatur":  false,
			"gerahmt":   false,
			"rahmenlos": false,
			"rand":      false,
			"links":     false,
			"rechts":    false,
			"ohne":      false,
			"zentriert": false,
			
			"pixel":     "",
			"seite":     "",
			"hochkant" : "",
			"verweis":   "",
			"alternativtext": ""
		};
		
		function deepReplace(_, str, delim) {
			if((str.length <= 0) || nowiki) {
				return "";
			}
			if(str.indexOf("<nowiki") >= 0) {
				nowiki = true;
				return "";
			}
			
			switch(str) {
				case("thumb"): case("thumbnail"): case("miniatur"):
					attribute = true;
					return "";
				case("left"): case("links"):
					attribute = true;
					return "";
				case("right"): case("rechts"):
					attribute = true;
					return "";
				case("none"): case("ohne"):
					attribute = true;
					return "";
				case("center"): case("centre"): case("zentriert"):
					attribute = true;
					return "";
				case("frame"): case("framed"): case("enframed"): case("gerahmt"):
					attribute = true;
					return "";
				case("frameless"): case("rahmenlos"):
					attribute = true;
					return "";
				case("border"): case("rand"):
					attribute = true;
					return "";
				case("upright"): case("hochkant"):
					attribute = true;
					return "";
				default: {
					var e = /^(page|seite|upright|hochkant|alt(?:ernativtext)?|link|verweis)=\s*(.*?)\s*$/.exec(str);
					if(e) {
						switch(e) {
							case("page"):
							case("seite"):
								// ignorieren: ich konnte noch nicht herausfinden,
								// was das überhaupt ist ...
								break;
							case("upright"):
							case("hochkant"):
								attribute = "hochkant=" + e;
								return "";
							case("alt"):
							case("alternativtext"):
								attribute = "alternativtext=" + e;
								return "";
							case("link"):
							case("verweis"):
								attribute = "verweis=" + e;
								return "";
						}
					}
					e = /^\s*(\d*x?\d+px)\s*$/.exec(str);
					if(e) {
						attribute = e;
						return "";
					}
				}
			}
			texts.push(str);
			return "";
		}
		
		if(!attrs || (attrs.length == 0)) {
			return "]";
		} else {
			attrs.replace(innerRegex, deepReplace);
			if(nowiki) {
				return "]";
			} else {
				var mitte = "";
				if(attribute) {
					attribute = false;
				}
				for(var i in attribute) {
					var mitteAlt = mitte;
					switch(typeof(attribute)) {
						case("boolean"): if(attribute) {
							mitte += "|" + i;
						} break;
						case("string"): if(attribute.length > 0) {
							mitte += "|" + attribute;
						} break;
					}
				}
				var rechts = "";
				for(var i = 0; i < texts.length; ++i) {
					rechts += "|" + texts;
				}
				return "]";
			}
		}
	}
	
	eb.value = eb.value.replace(outerRegex, bildHandler);
}

if(
	(mw.config.get('wgAction') === "edit") &&
	(mw.config.get('wgNamespaceNumber') === 0) &&
	("x".replace(/x/, function() {
		 /* schlechte IE-Versionen verstehen das evtl. nicht */
		return "y";
	}) === "y")
) {
	$(rev_syntax);
}