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
    local render  = args.render or "1"

	-- 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 mode = args.mode or ""
	if mode == "check" then
		return "1"
	end

	local result = {}

	for _, item in ipairs(items) do
local render = args.render or "1"  -- NEU

-- 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
			-- 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