Modul:BündelGalerie
Die Dokumentation für dieses Modul kann unter Modul:BündelGalerie/Doku erstellt werden
local p = {}
local function trim(s)
if not s then return "" end
return (mw.text.trim(s))
end
local function splitItems(s)
local out = {}
if not s or s == "" then return out end
for part in mw.text.gsplit(s, "%s*;%s*") do
part = trim(part)
if part ~= "" then
table.insert(out, part)
end
end
return out
end
local function findBundleLine(content, key)
key = mw.ustring.lower(trim(key or ""))
if key == "" then return nil end
for line in mw.text.gsplit(content or "", "\n", true) do
local raw = trim(line)
if raw ~= "" and raw:sub(1,1) ~= "<" then
local k, v = raw:match("^([^=]+)=%s*(.+)$")
if k and v then
k = mw.ustring.lower(trim(k))
if k == key then
return trim(v)
end
end
end
end
return nil
end
function p.main(frame)
local args = frame:getParent() and frame:getParent().args or frame.args
local bundle = args[1] or args.name or ""
bundle = trim(bundle)
local elementTemplate = trim(args.element or "GalerieElement") -- Name deiner Galerie-Vorlage
local dataPage = trim(args.data or "Vorlage:BündelDaten")
if bundle == "" then
return '<span class="error">BündelGalerie: Kein Bündelname angegeben.</span>'
end
local title = mw.title.new(dataPage)
if not title then
return '<span class="error">BündelGalerie: Datenseite nicht gefunden: ' .. mw.text.nowiki(dataPage) .. '</span>'
end
local content = title:getContent() or ""
local itemsStr = findBundleLine(content, bundle)
if not itemsStr or itemsStr == "" then
return '<span class="error">BündelGalerie: Bündel nicht gefunden: ' .. mw.text.nowiki(bundle) .. '</span>'
end
local items = splitItems(itemsStr)
if #items == 0 then
return '<span class="error">BündelGalerie: Bündel ist leer: ' .. mw.text.nowiki(bundle) .. '</span>'
end
local out = {}
for _, item in ipairs(items) do
table.insert(out, frame:expandTemplate{
title = elementTemplate,
args = { item }
})
end
return table.concat(out, "\n")
end
return p