Module:ListParser

From Dragalia Lost Wiki
Revision as of 18:17, 29 November 2019 by >Canim44 (Creating Module:ListParser (expanded Module:SummonShowcase with Weapon compatibility))
Jump to navigation Jump to search
50px Documentation

Also see Module:ListParserTooltip.

{{#invoke:ListParser|Linkify|Wyrmite, Elisanne, Dragalia Life}}

Script error: The function "Linkify" does not exist.

{{#invoke:ListParser|Weapons|Rathalos Firesword, Wyvern Blade “Maple”, Blazing Falchion, Rath Blaze Splitter, Spear of Prominence, Dark Filament, Plage Rod, Wyvern Staff “Elsewhere”, Fatalis Sword, Fatalis Xiphos, Black Dragon Blade, Black Dragon Axe, Black Dragon Spear, Black Dragon Bow, Fatalis Rhabdos, Black Dragon Staff}}

Script error: The function "Weapons" does not exist.


-- <includeonly> (prevents literal interpretation of links or categories within the module code)
-- Lua Templating for {{Template:SummonShowcase}}, {{Template:Event}} and any other templates requiring items to be listed in a series (,).
local p = {}

local itemTemplate = '<div style="display:inline-block;vertical-align:top;width:80px;text-align:center;padding:4px">%s<br>[[%s]]</div>'

-- Usage: {{#invoke:ListParser|Adventurers|<names,comma,separated>}}
-- Ex: {{#invoke:ListParser|Adventurers|Halloween Mym, Halloween Lowen, Halloween Odetta, Halloween Elisanne}}
function p.Adventurers(frame)
  local names = frame.args[1]
  return p._Adventurers(names)
end

function p._Adventurers(names)
  local result = {}

  for name in mw.text.gsplit(names, ',') do
    name = mw.text.trim(name)
    if name ~= '' then
      result[#result+1] = string.format(itemTemplate, icon('Adventurer', name), name)
    end
  end

  return table.concat(result, '')
end

-- Usage: {{#invoke:ListParser|Dragons|<names,comma,separated>}}
-- Ex: {{#invoke:ListParser|Dragons|Halloween Maritimus, Halloween Silke}}
function p.Dragons(frame)
  local names = frame.args[1]
  return p._Dragons(names)
end

function p._Dragons(names)
  local result = {}

  for name in mw.text.gsplit(names, ',') do
    name = mw.text.trim(name)
    if name ~= '' then
      result[#result+1] = string.format(itemTemplate, icon('Dragon', name), name)
    end
  end

  return table.concat(result, '')
end

-- Usage: {{#invoke:ListParser|Wyrmprints|<names,comma,separated>}}
-- Ex: {{#invoke:ListParser|Wyrmprints|Witch's Kitchen}}
function p.Wyrmprints(frame)
  local names = frame.args[1]
  return p._Wyrmprints(names)
end

function p._Wyrmprints(names)
  local result = {}

  for name in mw.text.gsplit(names, ',') do
    name = mw.text.trim(name)
    if name ~= '' then
      result[#result+1] = string.format(itemTemplate, icon('Wyrmprint', name), name)
    end
  end

  return table.concat(result, '')
end

-- Usage: {{#invoke:ListParser|Weapons|<names,comma,separated>}}
-- Ex: {{#invoke:ListParser|Weapons|Fólkvangr}}
function p.Wyrmprints(frame)
  local names = frame.args[1]
  return p._Weapons(names)
end

function p._Weapons(names)
  local result = {}

  for name in mw.text.gsplit(names, ',') do
    name = mw.text.trim(name)
    if name ~= '' then
      result[#result+1] = string.format(itemTemplate, icon('Weapon', name), name)
    end
  end

  return table.concat(result, '')
end


-- Common templating functions

-- {{Template:Icon}}
function icon(type, name)
  local frame = mw.getCurrentFrame()
  return frame:expandTemplate{title='Icon', args={type, name}}
end

return p
--</includeonly>