Modul:BündelGalerie: Unterschied zwischen den Versionen
Aus Dreamlight Valley Wiki
Freya (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Freya (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
| Zeile 3: | Zeile 3: | ||
local function trim(s) | local function trim(s) | ||
if not s then return "" end | if not s then return "" end | ||
return | return mw.text.trim(tostring(s)) | ||
end | end | ||
| Zeile 39: | Zeile 39: | ||
function p.main(frame) | function p.main(frame) | ||
local args = frame:getParent() and frame:getParent().args or frame.args | local args = frame:getParent() and frame:getParent().args or frame.args | ||
local | local bundle = trim(args[1] or args.name) | ||
local | local headline = trim(args.headline) | ||
local dataPage = "Vorlage:BündelDaten" | |||
local elementTemplate = "GalerieElement" -- ← Hier ggf. anpassen, falls deine Vorlage anders heißt | |||
if bundle == "" then | if bundle == "" then | ||
| Zeile 52: | Zeile 52: | ||
local title = mw.title.new(dataPage) | local title = mw.title.new(dataPage) | ||
if not title then | if not title then | ||
return '<span class="error">BündelGalerie: Datenseite nicht gefunden | return '<span class="error">BündelGalerie: Datenseite nicht gefunden.</span>' | ||
end | end | ||
| Zeile 64: | Zeile 64: | ||
local items = splitItems(itemsStr) | local items = splitItems(itemsStr) | ||
if #items == 0 then | if #items == 0 then | ||
return | return "" | ||
end | end | ||
local out = {} | 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 | for _, item in ipairs(items) do | ||
table.insert(out, frame:expandTemplate{ | table.insert(out, frame:expandTemplate{ | ||
| Zeile 74: | Zeile 81: | ||
}) | }) | ||
end | end | ||
table.insert(out, "</div>") | |||
return table.concat(out, "\n") | return table.concat(out, "\n") | ||
Version vom 24. Februar 2026, 03:40 Uhr
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 = "GalerieElement" -- ← 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