Modul:IterListe

Aus Dreamlight Valley Wiki
Version vom 24. Februar 2026, 19:12 Uhr von Freya (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

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