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

	-- NEU: steuert, ob Kategorien gesetzt werden sollen
	local setcats = args.setcats or ""

	if aktion == "" then
		return "" -- kein Fehler, einfach nichts ausgeben
	end

	local items = splitCommaList(liste)
	if #items == 0 then return "" end

	local result = {}

	for _, item in ipairs(items) do
		-- 1) Chips/Output rendern
		table.insert(result,
			frame:expandTemplate{
				title = aktion,
				args = {
					item,
					cat = cat,
					ctx = ctx,
					catname = catname
				}
			}
		)

		-- 2) OPTIONAL: Kategorien pro Item setzen
		if setcats ~= "" then
			-- Wenn catname gesetzt ist, nutze es; sonst baue "Item ctx"
			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