Difference between revisions of "Module:ListParser"

From Dragalia Lost Wiki
Jump to navigation Jump to search
>Eave
(add generic linkify-ier for list inputs)
>TheLOLxd2
m (Cleanup)
 
(8 intermediate revisions by one other user not shown)
Line 1: Line 1:
 
-- <includeonly> (prevents literal interpretation of links or categories within the module code)
 
-- <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 (,).
+
-- Lua Templating for {{SummonShowcase}}, {{Event}} and any other templates requiring items to be listed in a series (,).
 
local p = {}
 
local p = {}
  
Line 16: Line 16:
 
   local result = {}
 
   local result = {}
  
   for name in mw.text.gsplit(names, ',') do
+
   for pagename in mw.text.gsplit(pages, ',') do
     name = mw.text.trim(name)
+
     pagename = mw.text.trim(pagename)
     if name ~= '' then
+
     if pagename ~= '' then
       result[#result+1] = string.format('[[%s]]', name)
+
       result[#result+1] = string.format('[[%s]]', pagename)
 
     end
 
     end
 
   end
 
   end
  
   return table.concat(result, '')
+
   return table.concat(result, ', ')
 
end
 
end
  
Line 109: Line 109:
 
-- Common templating functions
 
-- Common templating functions
  
-- {{Template:Icon}}
+
-- {{Icon}}
 
function icon(type, name)
 
function icon(type, name)
 
   local frame = mw.getCurrentFrame()
 
   local frame = mw.getCurrentFrame()

Latest revision as of 05:10, 8 April 2020

50px Documentation

Also see Module:ListParserTooltip.

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

Wyrmite, Elisanne, Dragalia Life

{{#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}}
Error: Table Weapons not found.
Error: Table Weapons not found.
Error: Table Weapons not found.
Error: Table Weapons not found.
Error: Table Weapons not found.
Error: Table Weapons not found.
Error: Table Weapons not found.
Error: Table Weapons not found.
Error: Table Weapons not found.
Error: Table Weapons not found.
Error: Table Weapons not found.
Error: Table Weapons not found.
Error: Table Weapons not found.
Error: Table Weapons not found.
Error: Table Weapons not found.
Error: Table Weapons not found.

-- <includeonly> (prevents literal interpretation of links or categories within the module code)
-- Lua Templating for {{SummonShowcase}}, {{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</div>'


-- Usage: {{#invoke:ListParser|Linkify|<page names,comma,separated>}}
-- Ex: {{#invoke:ListParser|Linkify|Wyrmite, Elisanne, Dragalia Life}}
function p.Linkify(frame)
  local pages = frame.args[1]
  return p._linkify(pages)
end

function p._linkify(pages)
  local result = {}

  for pagename in mw.text.gsplit(pages, ',') do
    pagename = mw.text.trim(pagename)
    if pagename ~= '' then
      result[#result+1] = string.format('[[%s]]', pagename)
    end
  end

  return table.concat(result, ', ')
end

-- 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.Weapons(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

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

return p
--</includeonly>