Dieses Skript stellt einen Vorlagen-Parser zur Verfügung.
Verwendung Bearbeiten
Nach dem Laden des Skripts stehen zwei Funktionen zur Verfügung: mw.libs.templateGetLastError
und mw.libs.Template
. Beispiele für die Verwendung zeigen die QUnit-Tests unter Benutzer:Schnark/js/Template.js/test.js.
templateGetLastError Bearbeiten
Die Funktion gibt eine Fehlermeldung zurück, die den letzten aufgetretenen Fehler beschreibt. Nach dem Parsen wird der Fehler wieder zurückgesetzt, und man erhält den Leerstring.
Template Bearbeiten
Die Funktion kann sowohl als Konstruktor (mit new
) als auch als normale Funktion verwendet werden und erwartet neben zwei Pflichtparametern bis zu drei optionale Parameter:
- Name der Vorlage
- Wikitext
- Index der Vorlage (bei mehrfachem Vorkommen, 0 ist der Standard und findet das erste Vorkommen der Vorlage, 1 das zweite, etc.)
- boolesches Flag, ob mehrfache Parameter in der Vorlage ignoriert werden (bei
true
) oder einen Fehler erzeugen sollen (beifalse
, Standard). - boolesches Flag, ob in der Vorlage auch unbenannte Parameter vorkommen dürfen (bei
true
) oder einen Fehler erzeugen sollen (beifalse
, Standard).
Zurückgeliefert wird im Erfolgsfall ein Vorlagenobjekt. Tritt ein Fehler auf, so wird entweder null
zurückgegeben (falls Template
als Funktion aufgerufen wurde) oder ein Fehler ausgelöst (falls Template
als Konstruktor verwendet wurde).
Vorlagenobjekt Bearbeiten
Das Vorlagenobjekt hat folgende Methoden:
toString Bearbeiten
Liefert den eventuell geänderten Wikitext zurück. Das Skript wurde so konzipiert, dass ein möglichst sauberer Roundtrip stattfindet, ruft man die Methode ohne vorherige Änderungen auf, so finden nur die folgenden Änderungen am Wikitext statt:
- Der Vorlagenname wird so geschrieben, wie er der
Template
-Funktion übergeben wurde, der Namensraum wird in jedem Fall entfernt. - Leere, auskommentierte Parameter werden entfernt.
- Bei mehrfach auftretenden Parametern (sofern erlaubt) werden alle bis auf den letzten entfernt.
- Numerische Parameter werden in unbenannte Parameter umgewandelt, sofern dies möglich ist.
Alles andere, insbesondere Kommentare und Whitespace bleibt erhalten.
insert Bearbeiten
Die Methode fügt einen neuen Parameter ein und erwartet als Parameter
- den Namen des neuen Parameters,
- seinen Wert und
- optional den Name des Parameters, hinter dem der neue Parameter eingefügt werden soll. Andernfalls oder wenn dieser Parameter nicht vorhanden ist, wird am Ende eingefügt.
- optional ein boolescher Wert,
true
, falls nicht hinter, sondern vor dem Parameter, bzw. ganz am Anfang statt am Ende eingefügt werden soll
Ist der Name schon vorhanden, wird false
zurückgegeben und ein Fehler gesetzt, sonst true
.
Bei der Einfügung wird automatisch auf richtige Einrückung geachtet.
change Bearbeiten
Die Methode ändert den Wert eines vorhandenen Parameters und erwartet als Parameter
- den Namen des Parameters und
- den neuen Wert.
Ist der Parameter nicht vorhanden, wird false
zurückgegeben und ein Fehler gesetzt, sonst true
.
Beim Wechsel von oder zu einem leeren Wert wird automatisch auf schließende Leerzeichen geachtet.
rename Bearbeiten
Die Methode benennt einen Parameter um und erwartet als Parameter
- den alten Parameternamen und
- den neuen Namen.
Ist der alte Parameter nicht vorhanden oder existiert der neue Name schon, wird false
zurückgegeben und ein Fehler gesetzt, sonst true
.
Es wird automatisch auf eine eventuell notwendige Anpassung der Einrückung geachtet.
remove Bearbeiten
Die Methode entfernt einen Parameter und erwartet als Parameter
- den Namen des zu entfernenden Parameters.
Ist der Parameter nicht vorhanden, wird false
zurückgegeben und ein Fehler gesetzt, sonst true
.
move Bearbeiten
Die Methode verschiebt einen Parameter an eine andere Stelle und erwartet als Parameter
- den Name des zu verschiebenden Parameters und
- optional den Parameter, hinter den der Parameter verschoben werden soll. Andernfalls oder wenn dieser Parameter nicht vorhanden ist, wird ans Ende verschoben.
Ist der Parameter nicht vorhanden, wird false
zurückgegeben und ein Fehler gesetzt, sonst true
.
getIndention Bearbeiten
Die Methode liefert ein Array, dessen Werte die erkannte Einrück-Konvention beschreiben. Seine Einträge sind:
1
, falls jeder Parameter in einer eigenen Zeile steht,0
sonst- die Anzahl der Leerzeichen zwischen dem Zeilenumbruch oder dem vorhergehenden Parameter und der Pipe
- die Anzahl der Leerzeichen zwischen Pipe und Parametername
- die Anzahl der Leerzeichen zwischen Parametername und Gleichheitszeichen oder das Negative der Position des Gleichheitszeichens (falls diese untereinander angeordnet sind)
- die Anzahl der Leerzeichen zwischen Gleichheitszeichen und Wert
1
, falls diese Leerzeichen auch bei leerem Wert vorhanden sind,0
sonst
setIndention Bearbeiten
Die Methode erlaubt es, die Werte zur Einrück-Konvention zu ändern und erwartet bis zu sechs Parameter, in der obigen Reihenfolge, wobei Werte mit undefined
nicht geändert werden.
normalize Bearbeiten
Die Methode passt die gesamte Vorlage der erkannten oder gesetzten Einrück-Konvention an.
trim Bearbeiten
Die Methode entfernt innerhalb der Vorlage alle Leerzeichen am Zeilenende.
sort Bearbeiten
Die Methode sortiert die Parameter der Vorlage und erwartet als Parameter
- ein Array mit der gewünschten Reihenfolge und
- optional ein boolesches Flag, ob unbekannte Parameter akzeptiert und dann ans Ende sortiert werden sollen.
Bei Sortieren wird automatisch auf Kommentare geachtet, die offenbar als Überschrift für einzelne Bereiche gedacht sind.
validate Bearbeiten
Die Methode überprüft die gesamte Vorlage nach bestimmten Regeln, die in einem Objekt als Parameter übergeben werden. Dieses Objekt muss für alle möglichen Parameter ein Objekt angeben, das die Regeln angibt, die für diesen Parameter gelten. Dieses Objekt kann folgende Werte enthalten:
re
: ein regulärer Ausdruck, dem der Wert entsprechen muss.optional
: falls auftrue
gesetzt, ist dieser Parameter optionalallGroup
: ist ein Parameter aus dieser Gruppe vorhanden, so müssen auch alle anderen angegeben sein (offenbar nur bei optionalen Parametern sinnvoll)oneGroup
: aus dieser Gruppe darf nur ein Parameter vorhanden sein (optional
sollte für alle Parameter dieser Gruppe den gleichen Wert haben)
Schlägt die Überprüfung fehlt, wird false
zurückgegeben und ein Fehler gesetzt, sonst true
.
getVal Bearbeiten
Die Methode liefert den Wert des übergebenen Parameters zurück oder undefined
, falls er nicht vorhanden ist.
Code Bearbeiten
Der Javascript-Code befindet sich unter Benutzer:Schnark/js/Template.js.