Modul:MagicWords
Modul:MagicWords – Automatische Einbindung von Magic Words Bearbeiten
Dieses Modul dient der standardisierten, automatischen Einbindung von MediaWiki Magic Words und Variablen in Artikeln. Es ermöglicht eine zentrale Wartung der Definitionen und markiert automatisch als veraltet definierte Einträge mit einer Wartungskategorie.
Datengrundlage Bearbeiten
Alle Magic Words, Common Names und ihr Unterstützungsstatus sind in der ausgelagerten Tabelle Modul:MagicWords/Data definiert.
Die Daten werden über mw.loadData geladen und sind somit hochgradig gecacht.
Verfügbare Funktionen Bearbeiten
Das Modul bietet zwei Funktionen, die über {{#invoke:MagicWords|Funktionsname}} aufgerufen werden:
| Funktion | Zweck | Input | Output |
|---|---|---|---|
getLookupValues
|
Gibt die reinen Daten aus der Lookup-Tabelle als String aus (zur Validierung oder Dokumentation). | Komma-separierte Liste der Common Names. | Zeilenweise formatierte Strings. |
renderMagicWords
|
Rendert die tatsächlichen Magic Words für die Artikeleinbindung. | Komma-separierte Liste der Common Names. | Zeilenweise Wikitext-Ausgabe. Inklusive Wartungskategorie für veraltete Einträge. |
1. Funktion: getLookupValues (Datenabfrage)
Bearbeiten
Diese Funktion zeigt die in der Datentabelle hinterlegten Werte an.
Syntax Bearbeiten
{{#invoke:MagicWords|getLookupValues|Common Name 1, Common Name 2, ...}}
Beispiel [Wikitext] Bearbeiten
{{#invoke:MagicWords|getLookupValues|Jahr, Seitenname, AnzahlViews}}
Beispiel (Resultat [Lua]) Bearbeiten
Common Name: Jahr, Magic Word: {{CURRENTYEAR}}, Supported: true
Common Name: Seitenname, Magic Word: {{PAGENAME}}, Supported: true
Common Name: AnzahlViews, Magic Word: {{NUMBEROFVIEWS}}, Supported: false
2. Funktion: renderMagicWords (Artikeleinbindung)
Bearbeiten
Rendert die tatsächlichen Magic Words. Die Ausgabe erfolgt zeilenweise, da dies für Verhaltensschalter (__NOTOC__) oft notwendig ist.
Wartungslogik Bearbeiten
Wenn ein Magic Word in der Datentabelle den Status false (nicht unterstützt/veraltet) hat, wird die Wartungskategorie Kategorie:Veraltete MagicWords-Definition automatisch in den Artikel eingebunden.
Syntax Bearbeiten
{{#invoke:MagicWords|renderMagicWords|Common Name 1, Common Name 2, ...}}
Beispiel (Wikitext) Bearbeiten
{{#invoke:MagicWords|renderMagicWords|AnzahlViews, Nicht_Indexieren, Tag1Stellig}}
Beispiel (Resultat im Artikel) Bearbeiten
{{NUMBEROFVIEWS}}
[[Kategorie:Veraltete MagicWords-Definition]]
__NOINDEX__
{{CURRENTDAY}}
3. Datenstruktur (Modul:MagicWords/Data) Bearbeiten
Die folgende Tabelle zeigt einen Auszug der im Datenmodul hinterlegten Common Names und Magic Words. Der Status Supported (true/false) steuert die Wartungskategorie.
| Common Name | Magic Word / Variable | Supported | Kategorie |
|---|---|---|---|
| 1. Verhaltensschalter | |||
| Kein_Inhaltsverzeichnis | __NOTOC__
|
true | Steuerung |
| Nicht_Indexieren | __NOINDEX__
|
true | Indexierung |
| Keine_Titelkonvertierung | __NOTITLECONVERT__
|
false | Sprachkonvertierung (Veraltet) |
| Archiv | __ARCHIVEDTALK__
|
false | Diskussionsseitenarchive (benötigt DiscussionTools) |
| 2. Variablen | |||
| Jahr | {{CURRENTYEAR}}
|
true | Zeit/Datum |
| Monatsname | {{CURRENTMONTHNAME}}
|
true | Zeit/Datum |
| Seitenname | {{PAGENAME}}
|
true | Seiteninformation |
| AnzahlViews | {{NUMBEROFVIEWS}}
|
false | Statistik (Mit Mediawiki 1.25 deaktiviert) |
| SiteName | {{SITENAME}}
|
true | Site-Information |
| 3. Parserfunktionen | |||
| DefaultSortierSchlüssel | {{DEFAULTSORT:}}
|
true | Formatierung |
| Bedingter_Ausdruck | {{#ifexpr:}}
|
true | ParserFunctions |
… für die vollständige Liste → Siehe: Modul:MagicWords/Data .
-- Modul:MagicWords
-- Dient der sicheren Einbindung von MediaWiki-Magic-Words anhand eines Namensmappings.
-- Unterstützt Komma-separierte Eingabe und gibt alle Magic Words zeilenweise zurück.
local p = {}
-- Lade die Daten aus der /Data-Unterseite
local ok, data = pcall(mw.loadData, 'Modul:MagicWords/Data')
local magic_words_data = ok and data or {}
local MAINTENANCE_CATEGORY = "[[Kategorie:Veraltete MagicWords-Definition]]"
-- Hilfsfunktion zum Verarbeiten der Eingabeliste
local function processInput(args_string)
local args = args_string or ""
-- Zerlege den String in eine Tabelle und entferne Leerzeichen
local names = mw.text.split(args, ',')
local trimmed_names = {}
for _, name in ipairs(names) do
local trimmed = mw.text.trim(name)
if trimmed ~= "" then
table.insert(trimmed_names, trimmed)
end
end
return trimmed_names
end
---
-- Gibt nur die Listenwerte aus der Lookup-Tabelle zurück.
-- Die Ausgabe erfolgt zeilenweise.
---
function p.getLookupValues(frame)
local input = frame.args[1] or frame:getParent().args[1]
local common_names = processInput(input)
local result = {}
for _, name in ipairs(common_names) do
local entry = magic_words_data[name]
if entry then
local magic_word, supported = unpack(entry)
table.insert(result, string.format("Common Name: %s, Magic Word: %s, Supported: %s",
name, magic_word, tostring(supported)))
else
-- Für nicht gefundene Namen
table.insert(result, "")
end
end
-- Ausgabe muss zeilenweise erfolgen (\n)
return table.concat(result, "\n")
end
---
-- Rendert den Inhalt für die Artikeleinbindung.
-- Fügt bei 'supported = false' die Wartungskategorie hinzu.
-- Die Ausgabe erfolgt zeilenweise.
---
function p.renderMagicWords(frame)
local input = frame.args[1] or frame:getParent().args[1]
local common_names = processInput(input)
local output = {}
for _, name in ipairs(common_names) do
local entry = magic_words_data[name]
if entry then
local magic_word, supported = unpack(entry)
-- Füge das Magic Word hinzu
table.insert(output, magic_word)
-- Prüfe, ob das Wort nicht unterstützt wird (veraltet)
if not supported then
table.insert(output, MAINTENANCE_CATEGORY)
end
else
-- Für unbekannte Namen (optional eine versteckte Meldung oder Kategorie)
table.insert(output, "")
end
end
-- Ausgabe soll zeilenweise erfolgen (\n)
return table.concat(output, "\n") .. "\n"
end
function p.splitList(args)
return processInput(args)
end
return p