Module:Infobox Player: Difference between revisions
Appearance
fixes categories appearing above Tag: Reverted |
Use lua ipairs Tag: Reverted |
||
| Line 8: | Line 8: | ||
end | end | ||
local | local sectionList = { | ||
{ name = "Basic Information", keys = { "season-joined", "nationality", "discord" } }, | |||
} | } | ||
| Line 19: | Line 19: | ||
local catCount = 0 | local catCount = 0 | ||
for | for _, section in ipairs(sectionList) do | ||
local has = false | local sectionName = section.name | ||
local keys = section.keys | |||
local has = false | |||
for _, k in ipairs(keys) do | for _, k in ipairs(keys) do | ||
if args[k] and args[k] ~= "" then has = true; break end | if args[k] and args[k] ~= "" then has = true; break end | ||
| Line 27: | Line 29: | ||
catCount = catCount + 1 | catCount = catCount + 1 | ||
outArgs["category" .. catCount] = sectionName | outArgs["category" .. catCount] = sectionName | ||
for _, k in ipairs(keys) do | for _, k in ipairs(keys) do | ||
local v = args[k] | local v = args[k] | ||
Revision as of 18:19, 21 June 2025
Documentation for this module may be created at Module:Infobox Player/doc
local infobox = require('Module:Infobox')
local p = {}
local function humanLabel(key)
key = mw.ustring.gsub(key, "%-", " ")
return mw.ustring.upper(mw.ustring.sub(key,1,1))
.. mw.ustring.sub(key,2)
end
local sectionList = {
{ name = "Basic Information", keys = { "season-joined", "nationality", "discord" } },
}
function p.infobox(frame)
local args = frame:getParent().args
local used = {} -- mark which keys we've output
local outArgs = { title = args.username }
local rowCount = 0
local catCount = 0
for _, section in ipairs(sectionList) do
local sectionName = section.name
local keys = section.keys
local has = false
for _, k in ipairs(keys) do
if args[k] and args[k] ~= "" then has = true; break end
end
if has then
catCount = catCount + 1
outArgs["category" .. catCount] = sectionName
for _, k in ipairs(keys) do
local v = args[k]
if v and v ~= "" then
rowCount = rowCount + 1
outArgs["label" .. rowCount] = humanLabel(k)
outArgs["data" .. rowCount] = v
used[k] = true
end
end
end
end
-- gather any truly “extra” params
local extra = {}
for k, v in pairs(args) do
if k ~= "username"
and not used[k]
and not mw.ustring.match(k, "^category")
and v and v ~= ""
then
table.insert(extra, k)
end
end
if #extra > 0 then
catCount = catCount + 1
outArgs["category" .. catCount] = "Additional Data"
table.sort(extra)
for _, k in ipairs(extra) do
rowCount = rowCount + 1
outArgs["label" .. rowCount] = humanLabel(k)
outArgs["data" .. rowCount] = args[k]
end
end
outArgs.rows = rowCount
outArgs.categories = catCount
return infobox.infobox{
getParent = function() return { args = outArgs } end
}
end
return p