Module:Sandbox/McVahl/sometest
Appearance
{{Module rating }}
-- Module to build tables for basketball roster statistics
-- See documentation for details
local p = {}
local function get_header(rtable, row)
end
local function isHigh(args, mm, ptr, j, limit, col)
local tocheck = tonumber(args[ptr] or 0)
local nums = {}
for i = 2, limit, col do
table.insert(nums, tonumber(args[i + j] or 0))
end
return mm._max(nums) == tocheck
end
-- Main function
function p.main(frame)
local getArgs = require('Module:Arguments').getArgs
local mMath = require('Module:Math')
local mColorp = require('Module:Sports color')
local mColorc = require('Module:College color')
local yesno = require('Module:Yesno')
local args = getArgs(frame, { parentFirst = true })
local show_pos = yesno(args['show_pos'] or 'y')
local limit = 300
local col = show_pos and 10 or 9
local color1, color2
if not args[1] then frame.args[1] = args['team'] end
if mColorp.check(frame) == 'known' then
color1 = mColorp.colorcell(frame)
color2 = mColorp.colorcell2(frame)
elseif mColorc.check(frame) == 'known' then
color1 = mColorc.header1(frame)
color2 = mColorc.header2(frame)
end
local rtable = mw.html.create()
rtable = rtable:tag('table')
:addClass('wikitable')
:addClass('sortable')
:css('text-align', 'right')
local row = rtable:tag('tr')
row:tag('th'):attr('style', color1):attr('scope', 'col'):wikitext('Player')
if show_pos then
row:tag('th'):attr('style', color1):attr('scope', 'col'):wikitext('Pos')
end
row:tag('th'):attr('style', color1):attr('scope', 'col'):wikitext('GP')
row:tag('th'):attr('style', color1):attr('scope', 'col'):wikitext('GS')
row:tag('th'):attr('style', color1):attr('scope', 'col'):wikitext('MP')
row:tag('th'):attr('style', color1):attr('scope', 'col'):wikitext('Reb')
row:tag('th'):attr('style', color1):attr('scope', 'col'):wikitext('Ast')
row:tag('th'):attr('style', color1):attr('scope', 'col'):wikitext('Stl')
row:tag('th'):attr('style', color1):attr('scope', 'col'):wikitext('Blk')
row:tag('th'):attr('style', color1):attr('scope', 'col'):wikitext('Pts')
for i = 2, limit, col do
if not args[i] then break end
local data = {}
local status = args['status'.. (i + col - 2) / col]
for j = 0, (col - 1) do
local ptr = i + j
data[j + 1] = { value = args[ptr] or 0, highest = isHigh(args, mMath, ptr, j, limit, col) }
end
row = rtable:tag('tr')
row:tag('td')
:css('white-space', 'nowrap')
:css('text-align', 'left')
:wikitext(data[1].value .. (status and (' <b>('..status..')</b>') or ''))
for k=2, #data do
row:tag('td')
:attr('style', data[k].highest and color2 or nil)
:wikitext(data[k].value)
-- if show_pos and k == 2 then row:css('text-align', 'center') end
-- row:wikitext(data[k])
end
end
return tostring(rtable)
end
return p