Modul:Wortbedeutungen
Erscheinungsbild
Die Dokumentation für dieses Modul kann unter Modul:Wortbedeutungen/Doku erstellt werden
-- Modul:Wortbedeutungen
local p = {}
-- Hilfsfunktion zum Extrahieren der Zielseite einer Sprachvorstufe
local function extrahiereZielseite(content, n)
-- Versuch mit [[n-Sprachvorstufe::Ziel|Anzeigetext]]
local ziel = content:match(string.format("%[%[%d%-Sprachvorstufe::([^|%%]]+)|[^%%]]-%]%]", n))
if not ziel then
-- Versuch mit [[n-Sprachvorstufe::Ziel]]
ziel = content:match(string.format("%[%[%d%-Sprachvorstufe::([^%%]]+)%]%]", n))
end
return ziel
end
-- Hilfsfunktion zum Extrahieren der letzten Sprachstufe aus dem Inhalt
local function extrahiereSprachstufe(content)
local raw = content:match("%[%[Sprachstufe::([^%]]+)%]%]")
if not raw then return nil end
return raw:match("([^.]+%.)%s*$")
end
-- Hilfsfunktion zum Sammeln aller Werte eines Properties
local function sammleWerte(content, property)
local werte = {}
for wert in content:gmatch("%[%[" .. property .. "::([^%]]+)%]%]") do
table.insert(werte, wert)
end
return werte
end
-- Kombinierte Anzeige
function p.zeigNBD(frame)
local n = tonumber(frame.args[1]) or 1
local title = mw.title.getCurrentTitle()
local content = title:getContent() or ""
local ziel = extrahiereZielseite(content, n)
if not ziel then return string.format("[Fehlende %d-Sprachvorstufe]", n) end
local zielTitel = mw.title.new(ziel)
if not zielTitel then return string.format("[Seite '%s' nicht gefunden]", ziel) end
local zielContent = zielTitel:getContent() or ""
local stufe = extrahiereSprachstufe(zielContent) or "[Sprachstufe?]"
local b = sammleWerte(zielContent, "Wortbedeutung")
local d = sammleWerte(zielContent, "Dingbedeutung")
local ergebnis = ziel
if #b > 0 then ergebnis = ergebnis .. " '" .. table.concat(b, ", ") .. "'" end
if #d > 0 then ergebnis = ergebnis .. " '" .. table.concat(d, ", ") .. "'" end
return stufe .. " " .. ergebnis
end
-- Einzelne Anzeigen
function p.zeig(frame)
local n = tonumber(frame.args[1]) or 1
local title = mw.title.getCurrentTitle()
local content = title:getContent() or ""
local ziel = extrahiereZielseite(content, n)
if not ziel then return string.format("[Fehlende %d-Sprachvorstufe]", n) end
local zielTitel = mw.title.new(ziel)
if not zielTitel then return string.format("[Seite '%s' nicht gefunden]", ziel) end
local zielContent = zielTitel:getContent() or ""
local stufe = extrahiereSprachstufe(zielContent) or "[Sprachstufe?]"
return stufe .. " " .. ziel
end
function p.zeigB(frame)
local n = tonumber(frame.args[1]) or 1
local title = mw.title.getCurrentTitle()
local content = title:getContent() or ""
local ziel = extrahiereZielseite(content, n)
if not ziel then return string.format("[Fehlende %d-Sprachvorstufe]", n) end
local zielTitel = mw.title.new(ziel)
if not zielTitel then return string.format("[Seite '%s' nicht gefunden]", ziel) end
local zielContent = zielTitel:getContent() or ""
local b = sammleWerte(zielContent, "Wortbedeutung")
if #b > 0 then
return table.concat(b, ", ")
else
return string.format("[Keine Wortbedeutung gefunden in %s]", ziel)
end
end
function p.zeigD(frame)
local n = tonumber(frame.args[1]) or 1
local title = mw.title.getCurrentTitle()
local content = title:getContent() or ""
local ziel = extrahiereZielseite(content, n)
if not ziel then return string.format("[Fehlende %d-Sprachvorstufe]", n) end
local zielTitel = mw.title.new(ziel)
if not zielTitel then return string.format("[Seite '%s' nicht gefunden]", ziel) end
local zielContent = zielTitel:getContent() or ""
local d = sammleWerte(zielContent, "Dingbedeutung")
if #d > 0 then
return table.concat(d, ", ")
else
return string.format("[Keine Dingbedeutung gefunden in %s]", ziel)
end
end
return p