We are actively looking for staff to help us build the wiki. If you are interested please join our Discord server and apply.

Module:Items: Difference between revisions

From Moonbounce Wiki
Jump to navigation Jump to search
(Try and fix the "not a string" error I was getting)
(Remove the width style from the output table)
 
(3 intermediate revisions by the same user not shown)
Line 13: Line 13:
   -- Initialize the result string
   -- Initialize the result string
   local result = ""
   local result = ""
  -- define the item template to be used
  local item_template = "{{Item | name = NAME }}"


   -- if the item is wrapped in brackets, remove them
   -- if the item is wrapped in brackets, remove them
Line 23: Line 20:


   -- open a table to contain the items, spannin the header by the number of items
   -- open a table to contain the items, spannin the header by the number of items
   result = result .. "{| class=\"wikitable\" style=\"width: 100%; text-align: center;\"\n"
   result = result .. "{| class=\"wikitable\"\n"
   result = result .. "! colspan=\"" .. numItems .. "\" | " .. header .. "\n"
   result = result .. "! colspan=\"" .. numItems .. "\" | " .. header .. "\n"
   result = result .. "|-\n"
   result = result .. "|-\n"
Line 32: Line 29:
      
      
     -- Replace the NAME placeholder with the item name
     -- Replace the NAME placeholder with the item name
     local item_template = item_template:gsub("NAME", item)
     local item_template = "{{Item | name = " .. item .. " }}"
 
    -- Use frame:preprocess to ensure the template call is correctly parsed
    item_template = mw.text.trim(frame:preprocess(item_template))


     -- Append the item template to the result string
     -- Append the item template to the result string

Latest revision as of 03:04, 14 July 2024

Documentation for this module may be created at Module:Items/doc

-- Module:Items
local p = {}

function p.createItemTableRow(frame)
  
  -- Get the items and header passed to the module by their names, defaulting items to an empty string and header to "Items"
  local items = mw.text.split(frame.args.items or "", ",")
  local header = frame.args.header or "Items"

  -- Store the number of items
  local numItems = #items

  -- Initialize the result string
  local result = ""

  -- if the item is wrapped in brackets, remove them
  for i, item in ipairs(items) do
    items[i] = item:gsub("%[", ""):gsub("%]", "")
  end

  -- open a table to contain the items, spannin the header by the number of items
  result = result .. "{| class=\"wikitable\"\n"
  result = result .. "! colspan=\"" .. numItems .. "\" | " .. header .. "\n"
  result = result .. "|-\n"
  
  -- Iterate over the items and create an item template for each
  for i, item in ipairs(items) do
    item = mw.text.trim(item)
    
    -- Replace the NAME placeholder with the item name
    local item_template = "{{Item | name = " .. item .. " }}"

    -- Use frame:preprocess to ensure the template call is correctly parsed
    item_template = mw.text.trim(frame:preprocess(item_template))

    -- Append the item template to the result string
    result = result .. "| " .. item_template .. "\n"
  end

  -- close the table
  result = result .. "|}\n"

  return result
end

return p