local p = {}
local getArgs = require('Module:Arguments').getArgs
local colors = { first = { "#ffffbf", nil }, second = { "#dfdfdf", nil }, third = { "#ffdf9f", nil }, points = { "#dfffdf", nil }, nonPoints = { "#cfcfff", nil }, ret = { "#efcfff", nil }, dnq = { "#ffcfcf", nil }, dsq = { "#000000", "#ffffff" }, dns = { "#ffffff", nil } }
function p.main(frame)
local args = getArgs(frame)
return p._main(args)
end
function p._main(args)
local events = mw.text.split(args['events'], ",")
local participants = mw.text.split(args['participants'], ",")
local pointPositionsArg = mw.text.split(args['points'], ",")
local pointFastestLap = tonumber(args['pointsFL']) or 0
local pointPole = tonumber(args['pointsPole']) or 0
local pointPositions = {}
for i,v in ipairs(pointPositionsArg) do pointPositions[i] = tonumber(v) end
local p = {}
local pCodes = {}
for i,v in ipairs(participants) do
p[i] = args['participant_' .. v] or v
pCodes[v] = i
end
local e = {}
local r = {}
local rExtra = {}
local t = {}
for i,v in ipairs(events) do
e[i] = args['event_' .. v] or v
r[i] = {}
rExtra[i] = {}
if (args['result_' .. v] ~= nil) then
local res = mw.text.split(args['result_' .. v], ",")
for j, w in ipairs(res) do
r[i][pCodes[w]] = j
end
if (args['result_fl_' ..v] ~= nil) then
rExtra[i]['fl'] = pCodes[args['result_fl_' .. v]]
end
if (args['result_p_' ..v] ~= nil) then
rExtra[i]['p'] = pCodes[args['result_p_' .. v]]
end
end
end
table.insert(t, '{| class="wikitable" style="font-size: 85%; vertical-align:top; text-align:center""\n')
table.insert(t, '!style="vertical-align:middle;"|<abbr title="Position">Pos</abbr>\n')
table.insert(t, '!style="vertical-align:middle;"|Driver\n')
for i,v in ipairs(e) do
table.insert(t, '!' .. v .. '\n')
end
table.insert(t, '!style="vertical-align:middle"|Points\n')
for i,v in ipairs(p) do
table.insert(t, '|-\n')
table.insert(t, '|' .. i .. '\n')
table.insert(t, '|style="text-align:left;"|' .. v .. '\n')
local pts = 0
for j,w in ipairs(r) do
pts = pts + (pointPositions[r[j][i]] or 0)
table.insert(t, '|')
if (r[j] ~= nil and r[j][i] ~= nil) then
table.insert(t, r[j][i])
end
if (rExtra[j]['p'] == i) then
pts = pts + pointPole
table.insert(t, '<span style="margin:0 0.1em 0 0.1em;font-size:110%;font-weight:bold;"><sup>P</sup></span>')
end
if (rExtra[j]['fl'] == i) then
pts = pts + pointFastestLap
table.insert(t, '<span style="margin:0 0.1em 0 0.1em;font-size:110%;font-weight:bold;"><sup>F</sup></span>')
end
table.insert(t, '\n')
end
table.insert(t, '|' .. pts .. '\n')
end
table.insert(t, '|}')
return table.concat(t)
end
return p;