From Brotato Wiki
(fix incorrect name for Template:Character_Data) |
(1: Break into a new row after 10 items, 2: Wrap the weapon names in `Iconbox` templates) |
||
Line 1: | Line 1: | ||
-- Module:GetStartingWeaponsTableForCharacter | -- Module:GetStartingWeaponsTableForCharacter | ||
-- Used by: Template:GenerateCharacterStartingWeaponsTable (see for more info) | |||
local p = {} | local p = {} | ||
Line 19: | Line 21: | ||
local characterName = frame.args["name"] or "" | local characterName = frame.args["name"] or "" | ||
-- Retrieve the startingwpns data from the | -- Retrieve the startingwpns data from the CharacterWeapons_Data template | ||
local startingWeaponsList = frame:expandTemplate{ | local startingWeaponsList = frame:expandTemplate{ | ||
title = " | title = "CharacterWeapons_Data", | ||
args = {characterName, "startingwpns"} | args = {characterName, "startingwpns"} | ||
} | } | ||
Line 35: | Line 37: | ||
local output = "<table><tr>" | local output = "<table><tr>" | ||
-- Create the table cells for each weapon | -- Create the table cells for each weapon, adding a new row after every 10 items | ||
for | for i, weapon in ipairs(weapons) do | ||
weapon = mw.text.trim(weapon) -- Trim any whitespace around the weapon name | weapon = mw.text.trim(weapon) -- Trim any whitespace around the weapon name | ||
output = output .. "<td> | output = output .. "<td>{{Iconbox|" .. weapon .. "|size=60px|maxwidth=110px|rarity=auto}}</td>" | ||
-- Insert a new row after every 10th item | |||
if i % 10 == 0 then | |||
output = output .. "</tr><tr>" | |||
end | |||
end | end | ||
Revision as of 21:03, 5 November 2024
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 CharacterWeapons_Data template
local startingWeaponsList = frame:expandTemplate{
title = "CharacterWeapons_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
local output = "<table><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
output = output .. "<td>{{Iconbox|" .. weapon .. "|size=60px|maxwidth=110px|rarity=auto}}</td>"
-- Insert a new row after every 10th item
if i % 10 == 0 then
output = output .. "</tr><tr>"
end
end
-- Close the table row and table
output = output .. "</tr></table>"
return output
end
return p