Module:WDL/sandbox

Documentation for this module may be created at Module:WDL/sandbox/doc

Documentation for this module may be created at Module:WDL/sandbox/doc

require('strict')

local getArgs = require('Module:Arguments').getArgs
local roundAndPad = require('Module:Math')._precision_format

local p = {}

local function total(won, drawn, lost)
	if not won and not drawn and not lost then
		return ''
	else
		return (won or 0) + (drawn or 0) + (lost or 0)
	end
end

local function displayWinPercent(frame, winPercent, decimals)
	local retval = ''
	if winPercent < 10 then
		retval = '<span style="visibility:hidden;color:transparent;">00</span>'
	elseif winPercent < 100 then
		retval = '<span style="visibility:hidden;color:transparent;">0</span>'
	end
	return retval .. frame:expandTemplate{title = 'Number table sorting', args = { roundAndPad(winPercent, decimals or 2) }}
end

local function pct(frame, played, won, drawn, lost, decimals, winpctdraw)
	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
		
		played = (won or 0) + (drawn or 0) + (lost or 0)
	elseif tonumber(played) <= 0 then
		return '<span style="display:none">!</span>—'
	end
	
	local wins = (won or 0)
	local draws = tonumber(drawn) or 0
	local games = played
	if draws > 0 then
		if winpctdraw == 'ignore'then
			-- treat ignored draws like the game was never played
			games = games - draws
		elseif winpctdraw == 'loss' then
			-- don't have to do anything - this was the previous behavior
		else  -- default to 'half'
			wins = wins + (draws / 2)
		end
	end
	
	return displayWinPercent(frame, 100 * wins / games, decimals)
end

function p.main(frame, otherargs)
	local args = otherargs or getArgs(frame)
	local tableprefix = string.format('| style="%stext-align:%s" |', args.total and 'font-weight:bold;background:#efefef;' or '', args.align or 'center')
	local played = total(args[2], args[3], args[4])
	local retval = tableprefix .. frame:expandTemplate{title = 'Number table sorting', args = { played }} .. '\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('%s%d\n', tonumber(args['for']) < tonumber(args.against) and '−' or '+', math.abs(args['for'] - args.against))
		else
			retval = retval .. tableprefix .. '<span style="display:none">!</span>—\n'
		end
	end
	if args.winpctdraw then
		retval = retval .. tableprefix .. frame:expandTemplate{title = 'Number table sorting', args = { args.winpctdraw }} .. '\n'
	end
	
	return retval .. tableprefix .. pct(frame, played, args[2], args[3], args[4], args.decimals, args.winpctdraw)
end

return p

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.