„Modul:Wortbedeutungen“ – Versionsunterschied
Erscheinungsbild
K Reperaturcode Markierung: Zurückgesetzt |
K wieder Reparatur Markierung: Zurückgesetzt |
||
| Zeile 5: | Zeile 5: | ||
-- Hilfsfunktion zum Extrahieren der Zielseite einer Sprachvorstufe | -- Hilfsfunktion zum Extrahieren der Zielseite einer Sprachvorstufe | ||
local function extrahiereZielseite(content, n) | local function extrahiereZielseite(content, n) | ||
local | -- Versuch mit [[n-Sprachvorstufe::Ziel|Anzeigetext]] | ||
local ziel = content:match(string.format("%[%[%d%-Sprachvorstufe::([^|%%]]+)|[^%%]]-%]%]", n)) | |||
if not ziel then | if not ziel then | ||
-- | -- Versuch mit [[n-Sprachvorstufe::Ziel]] | ||
ziel = content:match(string.format("%[%[%d%-Sprachvorstufe::([^%%]]+)%]%]", n)) | |||
end | end | ||
return ziel | return ziel | ||
Version vom 17. April 2025, 13:37 Uhr
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