Vorlagenprogrammierung Diskussionen Lua Test Unterseiten
Modul Deutsch English

Modul: Dokumentation

TemplUtl – Bibliotheksmodul mit Funktionen für das Arbeiten mit Vorlageneinbindungen.

Funktionen für Vorlagen

Bearbeiten
facets
Zerlegung in suchbare „Wörter“ (Gruppen nur aus Buchstaben und Ziffern aller Schriftsysteme; getrennt durch Sonderzeichen)
Parameter:
1
zu analysierender Text
decode
% – Text zunächst URL-dekodieren
faculty
Boolesche Auswahl (ja/nein) für Parameterwerte
Parameter:
1
zu analysierender Parameterwert
Leerzeichen werden ignoriert, Groß- und Kleinschreibung egal; zwei Interpretationen:
  • leer, 0, false, n, no, off, nein, 0000, -
  • 1, true, y, yes, on, ja, j; 0101 (boolesche Schalter dürfen sich wiederholen)
2
Verhalten bei nicht erkanntem Wert 1
(optional)
1 – „ja“ (Vorgabe)
0 – „nein“
- – „nein“ (Wert testen)
Ergebnis:
  • leer für „nein“
  • nicht leer (1) für „ja“
  • - falls 2=- und Wert nicht erkannt
Testseite mit Beispielergebnissen
Die Werte nein, ja, j gelten in nur deutschsprachigen Wikis, die anderen in jedem Wiki. Zur Spezifikation siehe hier.
failure
Formatiere Fehlermeldung; in der Bearbeitungsvorschau des Quelltextes im Seitenkopf wiederholen und verlinken
Parameter:
1
Fehlermeldung
2
Sichtbarkeit der Fehlermeldung in der Darstellung
(optional)
0 – „unsichtbar“ (Vorgabe)
1 – „sichtbar“
Ergebnis: HTML-Element
fake
Simulation einer Vorlageneinbindung durch blinde Einbindung, dadurch verschwindet diese Vorlage von Spezial:Unbenutzte Vorlagen (insbesondere bei substituierenden Vorlagen sowie für alle Hilfsseiten im Vorlagen-Namensraum, wie Test-, Wartungs-, Editnotice-, Preload- und sonstige Unterseiten, die regulär niemals eingebunden werden).
Parameter:
1
Titel/Name der Vorlage (nicht aktuelle Seite – schlägt in Kategorie:Wikipedia:Seite mit Vorlagenschleife auf)
fakes
Wie fake für eine ganze Serie
Parameter:
1 2 3 4 5 6 7 8 9 …
Titel/Name/Namensteil je einer Vorlage, beliebig viele
prefix
(optional) Wird dem Namen jeder Vorlage vorangestellt
list
(optional) 1 – Verlinkung jedes Eintrags aktivieren; als Aufzählung
firstbreak
Wenn das erste Zeichen des Textes (nach Trimmung) ein Aufzählungszeichen *#;: oder Tabellenbeginn/-ende usw. ist, das erst auf einer neuen Zeile wirksam wird, dann stelle einen Zeilenumbruch voran.
Parameter:
1
Wikitext
Ergebnis: getrimter Text, ggf. mit vorangestelltem Zeilenumbruch
from
Stelle den Namen der unmittelbar umgebenden Seite (Vorlage) anklickbar umgeben von nicht wirksamen doppelten geschweiften Klammern dar.
isRedirect
Erfolgt diese Einbindung auf einer Seite, die eine Weiterleitung ist?
nowiki1
Wenn das erste Zeichen des Textes (nach Trimmung) ein Aufzählungszeichen *#;: ist, das als solches wirksam würde, dann stelle es als HTML-Entity dar.
Parameter:
1
Ergebnis: getrimter Text, ggf. mit HTML-Entity
Wikitext
failsafe

Die Failsafe-Schnittstelle erlaubt den damit ausgerüsteten Modulen in globaler Verteilung

  • sicherzustellen, dass eine von einer Vorlage oder einem Modul benötigte Funktion in der lokalen Kopie eines Bibliotheksmoduls vorhanden ist, und ggf. auch in einer erforderlichen Mindestversion;
  • die globale Aktualisierung und Verknüpfung von Modulen über Wikidata zu verwalten.

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):

Parameter
Wert Ergebnis aktuell
nichts
false
lokale Version »2022-05-16«
Mindest­version Mindestversionsbezeichnung
Datum im ISO-Format

Es wird verglichen, ob das aktuelle Modul diese Version oder später erfüllt.

  • leer, falls Mindestversion nicht erfüllt
  • 2001-01-01 → »2022-05-16«
  • 2099-01-01 → »«
wikidata Versionsbezeichnung der globalen Mutter (d:Q52364930)
  • Versionsbezeichnung auf Wikidata
  • lokal, falls dort keine gefunden
»2022-05-16«
item ID des Wikidata-Items
  • leer, falls nicht definiert
»Q52364930«
~ Übereinstimmung der lokalen mit der auf Wikidata registrierten Versionsbezeichnung
  • leer, falls aktuell
  • Versionsbezeichnung auf Wikidata, falls ungleich
»«
@ Ist die aktuelle (Modul-)Seite richtig mit Wikidata verknüpft?
  • leer, falls mit dem richtigen Item verknüpft
  • Item-ID, falls nicht
Der Rückgabewert ist in der Vorlagenprogrammierung leer und per Lua false; andernfalls die angegebene Zeichenkette.

Funktionen für Lua-Module

Bearbeiten

Die Bibliothek muss über require() in das nutzende Modul eingebunden werden:[1]

local lucky, TemplUtl = pcall( require, "Module:TemplUtl" )
if type( TemplUtl ) == "table" then
    TemplUtl = TemplUtl()
else
    -- Fehlerfall; TemplUtl enthält Fehlermeldung
    return "<span class=\"error\">" .. TemplUtl .. "</span>"
end

Danach stehen zur Verfügung:

TemplUtl.facets( ask, adjust )
  • ask – string; zu analysierender Text
  • adjust – (optional) string; % – Text zunächst URL-dekodieren
TemplUtl.faculty( analyze, another, frame )
  • analyze – string, number, boolean, nil; was zu analysieren ist
  • another – (optional) string, number, boolean; Rückfallwert bei nicht erkanntem analyze
  • frame – (optional) Objekt; wenn zur Hand
Ergibt true, wenn „ja“, sonst false; oder "-" für die Analyse des Wertes.
Zahlen ungleich 0 sind „ja“.
TemplUtl.failure( alert, always )
  • analyze – string; Fehlermeldung
  • always – (optional) boolean; Sichtbarkeit
TemplUtl.fake( access )
  • access – (optional) string, boolean, nil; Name der Vorlage
TemplUtl.fakes( array, frame, ahead, answer )
  • array – table; mit ungetrimmten Namen der Vorlage auf numerischen Elementen
  • frame – (optional) Objekt; wenn zur Hand
  • ahead – (optional) string, nil; voranzustellender Namensbeginn
  • answer – (optional) true, nil; Aufzählung von Verlinkungen zurückgeben
Ergibt string, wenn answer
TemplUtl.feasible( address )
Beschreibt dies den Beginn einer Ressourcen-URL?
  • address – string; was zu durchsuchen ist
Ergibt true, wenn URL-Beginn (auch protokoll-relativ).
TemplUtl.feed( area, ahead, at, after )
Finde das nächste freie | oder }}.
  • area – string; was zu durchsuchen ist
    • Sollte nur die Vorlageneinbindung enthalten, um Treffer außerhalb der Einbindung zu vermeiden.
  • ahead – string; öffnendes Element, oder false
    • Eines von [ [[ {{ {{{ oder false
  • at – number; byte-Position in area, wo begonnen werden soll
  • aftertrue, wenn nur nach }} gesucht werden soll
  • Hinweis: Zu einem mit .find() gefundenen Beginn der Einbindung lässt sich damit das zugehörige Ende ermitteln, oder wenn für ahead {{ angegeben wird.
Ergibt zwei Werte:
  1. number; byte-Position in area
    • vor | oder }} – könnte auch das Ende von area sein.
    • Punkt zur Fortsetzung der Suche; ahead wurde geschlossen.
  2. true, wenn ab number eine Suche fortgesetzt werden soll.
TemplUtl.feeder( area, at )
Ermittle alle Parameter der Einbindung.
  • area – string; was zu durchsuchen ist
  • at – (optional) number; byte-Position in area, wo begonnen werden soll
Ergibt zwei Werte:
  1. table; Wertzuweisungen
    • [0] – Name der Vorlage, Seite, Parserfunktion
    • [1] … – unbenannte Parameter
    • ["name"] … – benannte Parameter
  2. string; Fehlermeldung(en), sonst nil
HTML-Kommentare werden nicht geliefert.
TemplUtl.fetch( area, ask )
Ermittle den Wert eines benannten Parameters.
  • area – string; was zu durchsuchen ist
    • Sollte nur die Vorlageneinbindung enthalten, um Treffer außerhalb der Einbindung zu vermeiden.
  • ask – string; Name des Parameters
Ergibt den getrimmten Parameterwert, oder nil.
TemplUtl.find( area, access, at, alter )
Finde das nächste Vorkommen einer Vorlageneinbindung.
  • area – string; was zu durchsuchen ist
  • access – string; getrimmter Seitentitel (Vorlage)
  • at – (optional) number; ustring-Position in area, wenn nicht 1
  • alter – (optional) string; Namensraum-pattern in Kleinschreibung (ohne Doppelpunkt)
    • "" für Artikel
    • false für Vorlagen
Ergibt ustring-Position der {{ in area, oder false.
TemplUtl.firstbreak( adjust )
  • adjust – string; getrimmter Wikitext
TemplUtl.flat( area )
Eliminiere Syntaxelemente, die nur Syntax unwirksam machen (HTML-Kommentar, nowiki pre syntaxhighlight).
  • area – string; was zu durchsuchen ist
Ergibt area ohne nur maskierende Textsyntax.
TemplUtl.nowiki1( adjust )
  • adjust – string; getrimmter Wikitext
TemplUtl.failsafe(atleast)
atleast
optional
nil oder Mindestversion oder "wikidata" oder ~ für Synchronisation
Rückgabewert: Boolesch oder Zeichenkette

Verwendung

Bearbeiten

Allgemeine Bibliothek; nicht eingegrenzt.

Internationalisierung

Bearbeiten
  • commons:Data:I18n/01.tab – Definition von „Ja“ und „Nein“ in der Projekt- bzw. Seitensprache.
  • Das Untermodul Modul:TemplUtl/local kann sprach- und projektabhängige Varianten definieren, wird jedoch zurzeit nicht benötigt.

Abhängigkeiten

Bearbeiten

Keine.

Anmerkungen

Bearbeiten
  1. Statt
    TemplUtl = TemplUtl()
    wurde früher auch angegeben:
    TemplUtl = TemplUtl.TemplUtl()
    Dies sollte nach und nach vereinfacht werden.