| Vorlagenprogrammierung | Diskussionen | Lua | Test | Unterseiten | |||
| Modul | Deutsch | English | Modul: | Dokumentation | |||
TemplatePar – Modul mit Hilfsfunktionen für die Vorlagenprogrammierung; namentlich die Analyse der Parameter der umgebenden Vorlageneinbindung.
Zusätzlich werden analog auch Lua-Module unterstützt.
#invoke prüfenInsbesondere sollen den Anwendern für Standardfälle der Parameteranalyse auf einfache Weise Standard-Fehlermeldungen dargestellt werden.
Alle Funktionen wirken hinsichtlich der analysierten Parameter auf die umgebende Vorlageneinbindung; die Parameter von #invoke spezifizieren die Regeln für die Analyse.
class=error zurückgegeben.= getrennt.= getrennt.0.#invoke)0.1=Parametername=Spezifikation* anzugeben oder einer geeigneten Spezifikation zu unterwerfen.class=error) zurückgegeben, wenn etwas nicht stimmt; sonst nichts.class=error zurückgegeben.Die Failsafe-Schnittstelle erlaubt den damit ausgerüsteten Modulen in globaler Verteilung
Die Failsafe-Schnittstelle liegt sowohl auf Ebene der Vorlagen wie auch in direktem Lua-Zugriff vor.
Die Funktionen sind im Einzelnen (nicht alle werden bereits überall in vollem Umfang unterstützt):
| Wert | Ergebnis | aktuell |
|---|---|---|
nichtsfalse |
lokale Version | »2023-03-20« |
| Mindestversion | Mindestversionsbezeichnung Datum im ISO-Format Es wird verglichen, ob das aktuelle Modul diese Version oder später erfüllt.
|
|
wikidata |
Versionsbezeichnung der globalen Mutter (d:Q15393417)
|
»2023-03-20« |
item |
ID des Wikidata-Items
|
»Q15393417« |
~ |
Übereinstimmung der lokalen mit der auf Wikidata registrierten Versionsbezeichnung
|
»« |
@ |
Ist die aktuelle (Modul-)Seite richtig mit Wikidata verknüpft?
|
|
Der Rückgabewert ist in der Vorlagenprogrammierung leer und per Lua false; andernfalls die angegebene Zeichenkette. | ||
Alle Funktionen, die auf einen Fehlerfall führen können (check, valid sowie downcase, verify), unterstützen auch die nachstehenden Parameter:
errNS lässt sich die Kategorisierung auf bestimmte Namensräume beschränken.@@@ enthält und template gesetzt ist, wird dies durch template ersetzt.cat beschränkt bleibt.errNS=) bedeutet keine Namensräume!class="error" formatiert:
format nicht angegeben.|format=*cat= gesetzt sein):
|format=|format=0|format=-|format=Fester Text|format=<span …>Fester Text</span>@@@ als Platzhalter für die unformatierte Standardmeldung.|format=<span …>Standardmeldung: @@@</span>|format=0 usw. immer Standardmeldung anzeigen:
|preview=1|preview=Fester Text|preview=<span …>Fester Text</span>|preview=<span …>Standardmeldung: @@@</span>Lua-Module liefern false bei fehlerfreier Analyse, ansonsten die Fehlermeldung.
Anwendungsfall für check am Beispiel der {{Information}}:
{{#invoke:TemplatePar
|check
|all= Beschreibung= Quelle= Urheber=
|opt= Datum= Genehmigung= Andere Versionen= Anmerkungen=
|template=[[Vorlage:Information]]}}
= enthalten kann, werden diese zur Abtrennung der Namen benutzt. Leerzeichen vor und nach dem Namen werden ignoriert. Zusätzliche Gleichheitszeichen sind unproblematisch.all= noch opt= aufgeführt sind, lösen eine Fehlermeldung aus.all= als auch opt= angegeben.all= noch opt= aufgeführt ist.all= aufgeführter Parameter.all= aufgeführter Parameter nur mit Gleichheitszeichen, aber ohne sichtbaren Wert angegeben; oder ein unbenannter Parameter ist leer.Für die optionale Bedingung 2 in valid gibt es zwei Grundtypen:
| sowie {{ und }} sind in der Vorlagenprogrammierung nicht möglich. Dafür sind zu ersetzen:
| → %!{{ → %((}} → %))Zur Spalte Implementierung siehe Hilfe:Lua/Zeichenketten #Pattern
| Schlüssel | Bedeutung | Implementierung |
|---|---|---|
ASCII |
ASCII-Zeichen (Codes 32–126), nur innerhalb einer Zeile, oder leer | ^[ -~]*$ |
ASCII+ |
wie vor; nicht leer | ^[ -~]+$ |
ASCII+1 |
in einem Wort; sonst wie vor und nicht leer | ^[!-~]+$ |
n |
Nur ASCII-Ziffern 0–9, sowie vorangestelltes Vorzeichen ASCII-Minus, oder leer | ^[%-]?[0-9]*$einzelnes Minus ausschließen |
n>0 |
Nur ASCII-Ziffern 0–9, ohne Vorzeichen, nicht leer und mindestens eine Ziffer nicht Null | ^[0-9]*[1-9][0-9]*$ |
N+ |
Wie n, aber führende Null nicht erlaubt und nicht leer |
^[%-]?[1-9][0-9]*$ |
N>0 |
Wie n>0, aber führende Null nicht erlaubt |
^[1-9][0-9]*$ |
x |
Hexadezimalzahl; ASCII-Ziffern 0–9 Buchstaben a–f A–F, oder leer | ^[0-9A-Fa-f]*$ |
x+ |
wie vor; nicht leer | ^[0-9A-Fa-f]+$ |
X |
Hexadezimalzahl; ASCII-Ziffern 0–9 Buchstaben A–F, oder leer | ^[0-9A-F]*$ |
X+ |
wie vor; nicht leer | ^[0-9A-F]+$ |
0,0 |
Beliebige Zahl; auch kleiner Null; kann Komma enthalten; oder leer | ^[%-]?[0-9]*,?[0-9]*$nicht nur Minus oder Komma |
0,0+ |
Zahl mit Komma und Nachkommastelle; auch kleiner Null | ^[%-]?[0-9]+,[0-9]+$ |
0,0+? |
Beliebige Zahl; auch kleiner Null; kann Komma und Nachkommastelle enthalten; nicht leer | ^[%-]?[0-9]+,?[0-9]*$ |
0.0 |
Beliebige Zahl; auch kleiner Null; kann Dezimalpunkt enthalten; oder leer | ^[%-]?[0-9]*[%.]?[0-9]*$nicht nur Minus oder Punkt |
0.0+ |
Zahl mit Dezimalpunkt und Dezimalstelle; auch kleiner Null | ^[%-]?[0-9]+%.[0-9]+$ |
0.0+? |
Beliebige Zahl; auch kleiner Null; kann Dezimalpunkt und Dezimalstelle enthalten; nicht leer | ^[%-]?[0-9]+[%.]?[0-9]*$ |
.0+ |
Beliebige Zahl; auch kleiner Null; kann Dezimalpunkt und Dezimalstelle enthalten, aber nicht notwendigerweise mit Ziffer davor; nicht leer | ^[%-]?[0-9]*[%.]?[0-9]+$ |
aa |
Mindestens zwei Buchstaben (nicht nur nebeneinander: N.N.) oder ein CJK | %a.*%aoder CJK |
ID |
Identifizierer unter Einschränkungen, wie sie für viele Sprachen üblich sind: ASCII, beginnend mit Buchstaben; weiter Ziffern und Unterstreichungsstrich; oder leer. Die nachfolgenden ASCII-Wörter sind ebenfalls unter dem Aspekt solcher Bezeichner zu sehen; etwa als Komponente einer URL. |
^[A-Za-z]?[A-Za-z_0-9]*$ |
ID+ |
wie vor; aber nicht leer. | ^[A-Za-z][A-Za-z_0-9]*$ |
ABC |
Wort in ASCII-Großbuchstaben; oder leer. | ^[A-Z]*$ |
ABC+ |
wie vor; aber nicht leer. | ^[A-Z]+$ |
Abc |
Wort in ASCII-Buchstaben mit nur erstem Buchstaben groß; oder leer. | ^[A-Z]*[a-z]*$ |
Abc+ |
wie vor; aber nicht leer. | ^[A-Z][a-z]+$ |
abc |
Wort in ASCII-Kleinbuchstaben; oder leer. | ^[a-z]*$ |
abc+ |
wie vor; aber nicht leer. | ^[a-z]+$ |
aBc+ |
Wort in ASCII-Buchstaben mit lower camel casing; nicht leer. | ^[a-z]+[A-Z][A-Za-z]*$ |
base64 |
Base64; oder leer. | ^[A-Za-z0-9%+/]*$ |
base64+ |
wie vor; aber nicht leer. | ^[A-Za-z0-9%+/]+$ |
pagename |
Zulässiger Seitenname; nicht leer. | nicht #<>[]|{} oder 12710 oder 1–3110 |
|
|
Zulässiger Titel oder Name einer Mediendatei bei
Als | |
|
|
Bedingung: Arithmetischer Vergleich oder (auch) numerische Ungleichheit | |
urlurl+ |
leer oder genau eine Internet URL (Pflicht) |
|
ref |
<ref> enthalten – Citation needed |
|
|
|
leer oder Sprachcode leer oder Leerzeichen-getrennte Liste von Sprachcodes |
|
* |
leer oder beliebig | |
+nichts |
nicht leer | %S |
| In Planung | ||
date |
Irgendein bekanntes Format für Datum und auch Zeit. | |
| Hier eher nicht vorgesehen | ||
| ||
Eine Testseite illustriert praktische Beispiele.
Die Funktionen für Vorlagen sind geeignet erreichbar. Zur prinzipiellen Funktionalität siehe jeweils dort. Weitere Funktionen nur für Module kommen hinzu.
Einbindung über require():
local lucky, TemplatePar = pcall( require, "Modul:TemplatePar" )
if type( TemplatePar ) == "table" then
TemplatePar = TemplatePar()
else
-- Fehlerfall; TemplatePar enthält Fehlermeldung
return "<span class='error'>" .. TemplatePar .. "</span>"
end
Danach stehen zur Verfügung:
<br /> voranstellen, wenn nicht leeroptions und alle Komponenten optional
key
pattern
min
max
templatecaterrNSformatpreviewfalse, wenn in Ordnung; sonst Fehlermeldungoptions und alle Komponenten optional
mandatory
optional
low
true: ignoriere Groß- und KleinschreibungtemplatecaterrNSformatpreviewfalse, wenn in Ordnung; sonst Fehlermeldung.args (number bei unbenannten, string bei benannten Vorlagenparametern).options und alle Komponenten optional
templatecaterrNSformatpreviewoptions und alle Komponenten optional
key
pattern
min
max
low
true: ignoriere Groß- und KleinschreibungtemplatecaterrNSformatpreviewkey und pattern können nicht gleichzeitig angegeben werden.false, wenn in Ordnung; sonst FehlermeldungTemplatePar.check(), jedoch Parameter des #invoke"wikidata"false oder stringAllgemeines Hilfsmittel; nicht eingegrenzt.
Fortgeschrittene Prüfungen der Parametersyntax benötigen die folgenden Bibliotheken:
file/imagelangurlFehlermeldungen sind grundsätzlich in englischer Sprache verfügbar.
Wenn im aktuellen Projekt ein zur Projektsprache passendes Datenmodul vorhanden ist, wird es automatisch statt der englischen Texte verwendet. Langfristig soll statt der Projektsprache sogar die Seiten- bzw. Benutzersprache verwendet werden.
Die nachstehenden Übersetzungen sind bekannt:
Die nicht-englischen Mitteilungen sollen als Systemnachrichten in MediaWiki: ausgelagert werden, um bei weiteren Sprachen und Umformulierungen nicht alle einbindenden Seiten neu aufbauen zu müssen. Sie werden bereits unterstützt und haben Vorrang vor den im Modul deklarierten Texten.
lua-module-TemplatePar-badPattern |
#invoke:TemplatePar pattern syntax error #invoke:TemplatePar Syntaxfehler des pattern |
lua-module-TemplatePar-dupOpt |
#invoke:TemplatePar repeated optional parameter #invoke:TemplatePar Optionsparameter wiederholt |
lua-module-TemplatePar-dupRule |
#invoke:TemplatePar parameter conflict key/pattern #invoke:TemplatePar Parameterkonflikt key/pattern |
lua-module-TemplatePar-empty |
Error in template * undefined value for mandatory Fehler bei Vorlage: Pflichtparameter ohne Wert |
lua-module-TemplatePar-invalid |
Error in template * invalid parameter Fehler bei Vorlage: Parameter ungültig |
lua-module-TemplatePar-invalidPar |
#invoke:TemplatePar invalid parameter #invoke:TemplatePar Ungültiger Parameter |
lua-module-TemplatePar-minmax |
#invoke:TemplatePar min > max #invoke:TemplatePar min > max |
lua-module-TemplatePar-multiSpell |
Error in template * multiple spelling of parameter Fehler bei Vorlage * Mehrere Parameter-Schreibweisen |
lua-module-TemplatePar-noMSGnoCAT |
#invoke:TemplatePar neither message nor category #invoke:TemplatePar weder Meldung noch Kategorie |
lua-module-TemplatePar-noname |
#invoke:TemplatePar missing parameter name #invoke:TemplatePar Parametername nicht angegeben |
lua-module-TemplatePar-tooLong |
Error in template * parameter too long Fehler bei Vorlage: Parameter zu lang |
lua-module-TemplatePar-tooShort |
Error in template * parameter too short Fehler bei Vorlage: Parameter zu kurz |
lua-module-TemplatePar-undefined |
Error in template * mandatory parameter missing Fehler bei Vorlage: Pflichtparameter fehlt |
lua-module-TemplatePar-unknown |
Error in template * unknown parameter name Fehler bei Vorlage: Parametername unbekannt |
lua-module-TemplatePar-unknownRule |
#invoke:TemplatePar unknown rule #invoke:TemplatePar Unbekannte Regel |