Modul:BündelGalerie
Aus Dreamlight Valley Wiki
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(tostring(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 = trim(args[1] or args.name)
local headline = trim(args.headline)
local dataPage = "Vorlage:BündelDaten"
local elementTemplate = "Galerie" -- ← Hier ggf. anpassen, falls deine Vorlage anders heißt
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.</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 ""
end
local out = {}
if headline ~= "" then
table.insert(out, "<div class='bundle-headline'>" .. mw.text.nowiki(headline) .. "</div>")
end
table.insert(out, "<div class='gallery-bundle'>")
for _, item in ipairs(items) do
table.insert(out, frame:expandTemplate{
title = elementTemplate,
args = { item }
})
end
table.insert(out, "</div>")
return table.concat(out, "\n")
end
return p