This Lua module is used on approximately 19,000 pages and changes may be widely noticed. Test changes in the module's /sandbox or /testcases subpages, or in your own module sandbox. Consider discussing changes on the talk page before implementing them. |
This module depends on the following other modules: |
Renders the "Career history" section of {{ Infobox baseball biography}}
local p = {}
local function isnotempty(s)
return s and s:match('%S')
end
function p.main(frame)
local player = {}
local coach = {}
local pargs = frame:getParent().args
local tracking = ''
local iargs = {}
local pmax = tonumber(frame.args'pmax' or '40') or 40
local cmax = tonumber(frame.args'cmax' or '30') or 30
for k,v in pairs(pargs) do
if type(k) == 'string' and isnotempty(v) then
if k:match('^team%d+$') then
local num = mw.ustring.gsub(k,'^team(%d+)$','%1')
table.insert(player, {tonumber(num) or 0, pargs'years' .. num or '', v})
elseif k:match('^cteam%d+$') then
local num = mw.ustring.gsub(k,'^cteam(%d+)$','%1')
table.insert(coach, {tonumber(num) or 0, pargs'cyears' .. num or '', v})
end
end
end
table.sort(player, function (a, b) return a1 < b1 end)
table.sort(coach, function (a, b) return a1 < b1 end)
local i = 1
if #player > 0 then
iargs'header' .. i = frame.args'pheader' or 'As player:'
i = i + 1
for k,v in ipairs(player) do
if v2 ~= '' then iargs'label' .. i = v2 end
if v3 ~= '' then iargs'data' .. i = v3 end
i = i + 1
end
end
if #coach > 0 then
iargs'header' .. i = frame.args'cheader' or 'As coach:'
i = i + 1
for k,v in ipairs(coach) do
if v2 ~= '' then iargs'label' .. i = v2 end
if v3 ~= '' then iargs'data' .. i = v3 end
i = i + 1
end
end
if i > 1 then
iargs'child' = 'yes'
iargs'labelstyle' = 'font-weight: normal;' .. (frame.args'yearstyle' or '')
iargs'headerstyle' = 'line-height: 1.2em;text-align: left;' .. (frame.args'headerstyle' or '')
iargs'datastyle' = 'line-height: 1.2em;text-align: left;' .. (frame.args'teamstyle' or '')
if #player > pmax then
tracking = tracking .. (frame.args'pmaxcat' or '')
end
if #coach > cmax then
tracking = tracking .. (frame.args'cmaxcat' or '')
end
return (frame.args'title' or 'Career history') .. require('Module:Infobox').infobox(iargs) .. tracking
end
return tracking
end
return p