Mô đun:PHL sports team/testtable

local yesno = require('Mô đun:Yesno')

local p = {}
local div = { 'short', 'men', 'women', 'boys', 'girls', 'name' }
local mod = 'PHL sports team'

local function get_aliases(t, a, d, tname, showdiv)
local ca, ia, ita = , , {}
local a, d = a[t], d[t]

if a then
for k, aka in pairs(a) do ca = ca .. string.format('(%s)', aka) end
end

if d then
table.sort(d, function (a, b) return a • %s (%s)', inst, k)
if tname then
table.insert(ita, string.format(showdiv and or ' (%s)',
tname, t, param, showdiv and k or k:sub(1, 4), k:gsub("thru", "–")))
end
end
end
end

table.sort(ita, function (a, b) return a ', mod, t))
local frt = frame:preprocess(string.format(, mod, t))
local fmain = frame:preprocess(string.format(, mod, t))

for i=3,6 do
fmain = fmain .. frame:preprocess(string.format(, mod, t, i))
frt = frt .. frame:preprocess(string.format(, mod, t, i))
fname = fname .. frame:preprocess(string.format(, mod, t, i))
end

fname = fname .. frame:preprocess(string.format(, mod, t))
frt = frt .. frame:preprocess(string.format(, mod, t))
fmain = fmain .. frame:preprocess(string.format(, mod, t))

res:tag('td'):wikitext(t)
res:tag('td'):attr('align', 'center'):wikitext(c[1] and c[1] .. a.c or '—')
res:tag('td'):wikitext(frame:preprocess(string.format(, mod, t)) .. a.i)
res:tag('td'):wikitext(fmain or '—')
res:tag('td'):attr('align', 'right'):wikitext(frt or '—')
res:tag('td'):wikitext(fname or '—')
return tostring(res)
end

local function get_row_tname(root, row, align, text, tag, it)
if yesno(tag or 'y') then
row = root:tag('tr')
end

local code = .. text ..
if it then
for k, ita in pairs(it) do
code = code .. 'hoặc ' .. ita ..
text = text .. 'hoặc ' .. ita
end
end

row:tag('td'):attr('align', 'left'):wikitext(code)
row:tag('td'):attr('align', align):wikitext(text)
return row
end

local function table_row_tname(frame, t, a, c)
local tname = frame.args['tname'] or 'UAAPteam'
local align = frame.args['align'] or 'left'
local rdef = string.format(, tname, t)
local rwom = string.format(, tname, t)
local rjnr = string.format(, tname, t)
local rgrl = string.format(, tname, t)
local rins = string.format(, tname, t)
local rsrt = string.format(, tname, t)
local rcst = string.format(, tname, t)

local root = mw.html.create()
local row = root:tag('tr')
local showdiv = yesno(frame.args.div or 'y')

row:tag('td'):css('border-bottom', '2px solid black'):cssText('style')
:attr('rowspan',showdiv and 7 or 3):wikitext(t)

if showdiv then
row:tag('td'):css('border-bottom', '2px solid black'):cssText('style')
:attr('rowspan',showdiv and 7 or 3):attr('align', 'center')
:wikitext(c[1] and c[1] .. a.c or '—')
end

row = get_row_tname(root, row, align, rdef, 'n')
if showdiv then
row = get_row_tname(root, row, align, rwom)
row = get_row_tname(root, row, align, rjnr)
row = get_row_tname(root, row, align, rgrl)
row = get_row_tname(root, row, align, rins, nil, a.it)
end

row = get_row_tname(root, row, align, rsrt)
row = get_row_tname(root, row, align, rcst, nil, not showdiv and a.it)
row:css('border-bottom', '2px solid black'):cssText('style')
return tostring(root)
end

function p._testtable(frame)
-- build table
local root = mw.html.create('table')
local temp, alias = {}, {}

root:addClass('wikitable sortable')
:css('background', 'transparent')
:css('font-size', '90%')

local row = root:tag('tr')
local tname = frame.args['tname']

if (tname == nil) then
root:css('line-height', '100%')
row:tag('th'):attr('rowspan',2):wikitext('Đội')
row:tag('th'):attr('rowspan',2):wikitext('Các mã hoặcBí danh')
row:tag('th'):attr('rowspan',2):wikitext('Trường học')
row:tag('th'):wikitext('Biểu tượng bên trái')
row:tag('th'):wikitext('Biểu tượng bên phải')
row:tag('th'):wikitext('Không có biểu tượng')
row = root:tag('tr')
row:tag('th'):wikitext('(Hàm: \'\'main\'\')')
row:tag('th'):wikitext('(Hàm: \'\'rt\'\')')
row:tag('th'):wikitext('(Hàm: \'\'name\'\')')
else
row:tag('th'):wikitext('Đội')
row:tag('th'):wikitext('Các mã hoặcBí danh')
row:tag('th'):wikitext('Cách sử dụng')
row:tag('th'):wikitext('Đầu ra')
end

root:cssText(style)

local args = (frame.args[1] ~= nil) and frame.args or frame:getParent().args
local data_module = string.format('Mô đun:%s/%s', mod, args['league'] or 'collegiate')
local data = mw.loadData(data_module)

for k, team in pairs(data) do
if type(team) ~= 'string' then table.insert(temp, k)
else
if alias[team] == nil then alias[team] = {} end
table.insert(alias[team], k)
end
end

table.sort(temp)
table.insert(temp, '}')
table.insert(temp, 'XYZ')

for k, team in pairs(temp) do
local aliases = get_aliases(team, alias, data, tname, true)
row = root:tag('tr')

if tname then row:wikitext(table_row_tname(frame, team, aliases, data[team] or ))
else row:wikitext(table_row_all(frame, team, aliases, data[team] or )) end
end

return tostring(root)
end

function p._main(frame)
-- build table
local root = mw.html.create('table')
local args = (frame.args[1] ~= nil) and frame.args or frame:getParent().args
local tname = args['tname'] or 'PBA team'
local league = args['league'] or 'PBA'
local temp, alias = {}, {}

local root = mw.html.create('table')
root:addClass('wikitable sortable')
:css('background', 'transparent')
:css('font-size', '90%')

local row = root:tag('tr')
local data_module = string.format('Mô đun:%s/%s', mod, league)
local data = mw.loadData(data_module)

for k, team in pairs(data) do
if type(team) ~= 'string' then table.insert(temp, k)
else
if alias[team] == nil then alias[team] = {} end
table.insert(alias[team], k)
end
end

table.sort(temp)
table.insert(temp, '}')
table.insert(temp, 'XYZ')

row:tag('th'):wikitext('Các mã hoặcBí danh')
row:tag('th'):wikitext('Cách sử dụng')
row:tag('th'):wikitext('Đầu ra')

for k, team in pairs(temp) do
local aliases = get_aliases(team, alias, data, tname, yesno(args.div))
row = root:tag('tr')
row:wikitext(table_row_tname(frame, team, aliases, data[team] or ))
end

return tostring(root)
end

function p.testtable(frame)
frame.args['div'] = 'y'
return frame:preprocess(p._testtable(frame))
end

function p.main(frame)
frame.args['div'] = 'n'
return frame:preprocess(p._main(frame))
end

return p