Modul:IterListe
Aus Dreamlight Valley Wiki
Die Dokumentation für dieses Modul kann unter Modul:IterListe/Doku erstellt werden
local p = {}
-- Splittet "A, B, C" sauber, trimmt Leerzeichen, ignoriert leere Einträge
local function splitCommaList(text)
if not text or text == "" then return {} end
local out = {}
for item in mw.text.gsplit(text, ",", true) do
item = mw.text.trim(item)
if item ~= "" then
table.insert(out, item)
end
end
return out
end
function p.run(frame)
local args = frame:getParent().args
local liste = args.liste or ""
local aktion = args.aktion or ""
local cat = args.cat
local ctx = args.ctx
local catname = args.catname
-- steuert, ob Chips/Output gerendert werden sollen (0 = nein)
local render = args.render or "1"
-- steuert, ob Kategorien gesetzt werden sollen
local setcats = args.setcats or ""
-- Modus: "check" = nur prüfen, ob mindestens 1 Item existiert
local mode = args.mode or ""
-- ✅ immer zuerst Liste parsen (damit check auch ohne aktion funktioniert)
local items = splitCommaList(liste)
if #items == 0 then return "" end
-- ✅ check muss VOR aktion-Check kommen
if mode == "check" then
return "1"
end
-- Ohne Aktion: nichts rendern (aber kein Fehler)
if aktion == "" then
return ""
end
local result = {}
for _, item in ipairs(items) do
-- 1) Chips/Output rendern (optional)
if render ~= "0" then
table.insert(result,
frame:expandTemplate{
title = aktion,
args = {
item,
cat = cat,
ctx = ctx,
catname = catname
}
}
)
end
-- 2) OPTIONAL: Kategorien pro Item setzen
if setcats ~= "" then
local categoryName
if catname and catname ~= "" then
categoryName = catname
elseif ctx and ctx ~= "" then
categoryName = item .. " " .. ctx
else
categoryName = item
end
table.insert(result, "[[Kategorie:" .. categoryName .. "]]")
end
end
return table.concat(result, " ")
end
return p