From Brotato Wiki
Documentation for this module may be created at Module:GetStartingWeaponsTableForCharacter/doc
-- Module:GetStartingWeaponsTableForCharacter
-- Used by: Template:GenerateCharacterStartingWeaponsTable (see for more info)
local p = {}
-- Helper function to split a string by a given delimiter
local function split(inputstr, sep)
if sep == nil then
sep = ","
end
local t = {}
for str in string.gmatch(inputstr, "([^" .. sep .. "]+)") do
table.insert(t, str)
end
return t
end
-- Main function to generate a table of starting weapons
function p.getStartingWeaponsTable(frame)
-- Get the character name from the frame arguments
local characterName = frame.args["name"] or ""
-- Retrieve the startingwpns data from the Character_Data template
local startingWeaponsList = frame:expandTemplate{
title = "Character_Data",
args = {characterName, "startingwpns"}
}
if not startingWeaponsList or startingWeaponsList == "-" then
return "Starting weapons data not found for character: " .. characterName
end
-- Split the starting weapons list into individual items
local weapons = split(startingWeaponsList, ",")
-- Start building the HTML table with pretty formatting
local output = {}
table.insert(output, '<table class="starting-weapons-table">')
table.insert(output, "\t<tr>")
-- Create the table cells for each weapon, adding a new row after every 10 items
for i, weapon in ipairs(weapons) do
weapon = mw.text.trim(weapon) -- Trim any whitespace around the weapon name
-- Expand the Iconbox template for each weapon
local iconbox = frame:expandTemplate{
title = "Iconbox",
args = {weapon, size = "60px", maxwidth = "110px", rarity = "auto"}
}
table.insert(output, "\t\t<td>" .. iconbox .. "</td>")
-- Insert a new row after every 10th item
if i % 10 == 0 then
table.insert(output, "\t</tr>")
if i ~= #weapons then -- Avoid adding an extra row if we're at the end
table.insert(output, "\t<tr>")
end
end
end
-- Close the final row and table
if #weapons % 10 ~= 0 then
table.insert(output, "\t</tr>")
end
table.insert(output, "</table>")
return table.concat(output, "\n")
end
return p