Modul:MagicWords
Modul:MagicWords – Automatische Einbindung von Magic Words[Quelltext 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[Quelltext 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[Quelltext 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)[Quelltext bearbeiten]
Diese Funktion zeigt die in der Datentabelle hinterlegten Werte an.
Syntax[Quelltext bearbeiten]
{{#invoke:MagicWords|getLookupValues|Common Name 1, Common Name 2, ...}}
Beispiel [Wikitext][Quelltext bearbeiten]
{{#invoke:MagicWords|getLookupValues|Jahr, Seitenname, AnzahlViews}}
Beispiel (Resultat [Lua])[Quelltext 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)[Quelltext bearbeiten]
Rendert die tatsächlichen Magic Words. Die Ausgabe erfolgt zeilenweise, da dies für Verhaltensschalter (__NOTOC__) oft notwendig ist.
Wartungslogik[Quelltext 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[Quelltext bearbeiten]
{{#invoke:MagicWords|renderMagicWords|Common Name 1, Common Name 2, ...}}
Beispiel (Wikitext)[Quelltext bearbeiten]
{{#invoke:MagicWords|renderMagicWords|AnzahlViews, Nicht_Indexieren, Tag1Stellig}}
Beispiel (Resultat im Artikel)[Quelltext bearbeiten]
{{NUMBEROFVIEWS}}
[[Kategorie:Veraltete MagicWords-Definition]]
__NOINDEX__
{{CURRENTDAY}}
3. Datenstruktur (Modul:MagicWords/Data)[Quelltext 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