Difference between revisions of "Module:WDL/sandbox"
Jump to navigation
Jump to search
blackwiki>Jackmcbarn (rm extra newline) |
blackwiki>Jackmcbarn (don't bother exporting functions that nothing uses) |
||
| Line 6: | Line 6: | ||
local p = {} | local p = {} | ||
| − | function | + | local function total(frame, played, won, drawn, lost, category) |
if played == '-' or played == '—' then | if played == '-' or played == '—' then | ||
return '—' | return '—' | ||
| Line 19: | Line 19: | ||
return frame:expandTemplate{title = 'Number table sorting', args = { played }} | return frame:expandTemplate{title = 'Number table sorting', args = { played }} | ||
end | end | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
end | end | ||
| Line 39: | Line 34: | ||
end | end | ||
| − | function | + | local function pct(frame, played, won, drawn, lost, decimals) |
if played == '-' or played == '—' then | if played == '-' or played == '—' then | ||
return '—' | return '—' | ||
| Line 54: | Line 49: | ||
return displayWinPercent(frame, 100 * (won or 0) / played, decimals) | return displayWinPercent(frame, 100 * (won or 0) / played, decimals) | ||
end | end | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
end | end | ||
| Line 64: | Line 54: | ||
local args = getArgs(frame) | local args = getArgs(frame) | ||
local tableprefix = string.format('| style="%stext-align:%s" |', args.total and 'font-weight:bold;background:#efefef;' or '', args.align or 'center') | local tableprefix = string.format('| style="%stext-align:%s" |', args.total and 'font-weight:bold;background:#efefef;' or '', args.align or 'center') | ||
| − | local retval = tableprefix .. | + | local retval = tableprefix .. total(frame, args[1], args[2], args[3], args[4], args.demospace and '' or '[[Category:WDL error]]') .. '\n' |
retval = retval .. tableprefix .. frame:expandTemplate{title = 'Number table sorting', args = { args[2] }} .. '\n' | retval = retval .. tableprefix .. frame:expandTemplate{title = 'Number table sorting', args = { args[2] }} .. '\n' | ||
retval = retval .. tableprefix .. frame:expandTemplate{title = 'Number table sorting', args = { args[3] }} .. '\n' | retval = retval .. tableprefix .. frame:expandTemplate{title = 'Number table sorting', args = { args[3] }} .. '\n' | ||
| Line 81: | Line 71: | ||
end | end | ||
end | end | ||
| − | return retval .. tableprefix .. | + | return retval .. tableprefix .. pct(frame, args[1], args[2], args[3], args[4], args.decimals) |
end | end | ||
return p | return p | ||
Revision as of 16:00, 7 May 2014
Documentation for this module may be created at Module:WDL/sandbox/doc
require('Module:No globals')
local getArgs = require('Module:Arguments').getArgs
local roundAndPad = require('Module:Decimals')._main
local p = {}
local function total(frame, played, won, drawn, lost, category)
if played == '-' or played == '—' then
return '—'
elseif not played then
if not won and not drawn and not lost then
return ''
end
return frame:expandTemplate{title = 'Number table sorting', args = { (won or 0) + (drawn or 0) + (lost or 0) }}
elseif tonumber(played) ~= (won or 0) + (drawn or 0) + (lost or 0) then
return '<span class="error" style="font-size:100%"><abbr title="GP not equal to W + D + L">error</abbr>' .. (category or '') .. '</span>'
else
return frame:expandTemplate{title = 'Number table sorting', args = { played }}
end
end
local function displayWinPercent(frame, winPercent, decimals)
local retval = ''
if winPercent < 10 then
retval = '<span style="visibility:hidden;color:transparent;">0</span>'
end
retval = retval .. frame:expandTemplate{title = 'Number table sorting', args = { roundAndPad(winPercent, decimals or 2) }}
if winPercent >= 100 then -- XXX: Should >= be ==? This should never be over 100, but that's what the original template had
return retval .. '<span style="visibility:hidden;color:transparent;">0</span>'
else
return retval
end
end
local function pct(frame, played, won, drawn, lost, decimals)
if played == '-' or played == '—' then
return '—'
elseif not played then
if not won and not drawn and not lost then
return ''
elseif (won or 0) + (drawn or 0) + (lost or 0) <= 0 then
return '<span style="display:none">!</span>—'
end
return displayWinPercent(frame, 100 * (won or 1) / ((won or 1) + (drawn or 0) + (lost or 0)), decimals) -- XXX: Why is 1 used in the numerator instead of 0 if won isn't set? It's not like that in the case where played is set. It makes sense in the denominator to avoid a divide by zero
elseif tonumber(played) <= 0 then
return '<span style="display:none">!</span>—'
else
return displayWinPercent(frame, 100 * (won or 0) / played, decimals)
end
end
function p.main(frame)
local args = getArgs(frame)
local tableprefix = string.format('| style="%stext-align:%s" |', args.total and 'font-weight:bold;background:#efefef;' or '', args.align or 'center')
local retval = tableprefix .. total(frame, args[1], args[2], args[3], args[4], args.demospace and '' or '[[Category:WDL error]]') .. '\n'
retval = retval .. tableprefix .. frame:expandTemplate{title = 'Number table sorting', args = { args[2] }} .. '\n'
retval = retval .. tableprefix .. frame:expandTemplate{title = 'Number table sorting', args = { args[3] }} .. '\n'
retval = retval .. tableprefix .. frame:expandTemplate{title = 'Number table sorting', args = { args[4] }} .. '\n'
if args['for'] then
retval = retval .. tableprefix .. frame:expandTemplate{title = 'Number table sorting', args = { args['for'] }} .. '\n'
end
if args.against then
retval = retval .. tableprefix .. frame:expandTemplate{title = 'Number table sorting', args = { args.against }} .. '\n'
end
if args.diff == 'yes' then
if tonumber(args['for']) and tonumber(args.against) then
retval = retval .. tableprefix .. string.format('%+d\n', args['for'] - args.against)
else
retval = retval .. tableprefix .. '<span style="display:none">!</span>—\n'
end
end
return retval .. tableprefix .. pct(frame, args[1], args[2], args[3], args[4], args.decimals)
end
return p