Modul:IterListe

Aus Dreamlight Valley Wiki
Version vom 24. Februar 2026, 00:28 Uhr von Freya (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „local p = {} local function trim(s) return mw.text.trim(s or "") end local function split_list(s) s = s or "" -- Zeilenumbrüche -> Komma s = s:gsub("\r\n", "\n"):gsub("\n", ",") -- Semikolon auch erlauben s = s:gsub(";", ",") -- NBSP -> normales Space s = s:gsub("\194\160", " ") local out = {} for part in s:gmatch("[^,]+") do part = trim(part) if part ~= "" then table.insert(out, part) end end return out end…“)
(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 = {}

local function trim(s)
  return mw.text.trim(s or "")
end

local function split_list(s)
  s = s or ""
  -- Zeilenumbrüche -> Komma
  s = s:gsub("\r\n", "\n"):gsub("\n", ",")
  -- Semikolon auch erlauben
  s = s:gsub(";", ",")
  -- NBSP -> normales Space
  s = s:gsub("\194\160", " ")

  local out = {}
  for part in s:gmatch("[^,]+") do
    part = trim(part)
    if part ~= "" then
      table.insert(out, part)
    end
  end
  return out
end

function p.run(frame)
  local args = frame.args
  local liste = args.liste or ""
  local action = args.aktion or ""
  local cat = args.cat or ""
  local ctx = args.ctx or ""

  if trim(liste) == "" or trim(action) == "" then
    return ""
  end

  local items = split_list(liste)
  local res = {}

  for _, item in ipairs(items) do
    table.insert(res, frame:expandTemplate{
      title = action,
      args = { item, cat = cat, ctx = ctx }
    })
  end

  return table.concat(res, " ")
end

return p