Call of Duty Esports Wiki
Advertisement
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

To edit the documentation or categories for this module, click here.


local util_args = require('Module:ArgsUtil')
local util_map = require('Module:MapUtil')
local util_text = require('Module:TextUtil')
-- MathUtil
local p = {}

function p.sign(v)
	if v == 0 then return 0 end
	return (v > 0 and 1) or -1
end

function p.printWithSign(v)
	return (v > 0 and ('+%s'):format(v)) or v
end

function p.roundnum(v, bracket)
	bracket = bracket or 1
	return math.floor(v/bracket + p.sign(v) * 0.5) * bracket
end

function p.percent(v, bracket)
	return p.roundnum(v * 100, bracket or 2) .. '%'
end

function p.mod(a, b)
	return a - math.floor(a/b)*b
end

function p.sum(tbl)
	local total = 0
	for _, v in pairs(tbl) do
		total = total + v
	end
	return total
end

function p.tonumber(str)
	if not str then return nil end
	local raw_number = str:gsub(',','')
	return tonumber(raw_number)
end

function p.formatNumber(str)
	local num = tonumber(str)
	if num then
		return mw.getLanguage('en'):formatNum(num)
	else
		return str
	end
end

function p.serialize(N)
	local chr = tostring(N):sub(-1)
	local lookup = { ['1'] = 'st', ['2'] = 'nd', ['3'] = 'rd' }
	return N .. (lookup[chr] or 'th')
end

function p.deserialize(str)
	local deserialized = str:gsub('[A-Za-z]*','')
	if deserialized == '' then
		return nil
	end
	return deserialized
end

function p.padleft(num, digits)
	local str = tostring(num)
	local tbl = util_text.split(str, '')
	local len = #tbl
	local outputTbl = {}
	for k = 1, len do
		outputTbl[k] = tbl[len + 1 - k]
	end
	for k = len + 1, digits do
		outputTbl[k] = '0'
	end
	local outputReversed = table.concat(outputTbl, '')
	return outputReversed:reverse()
end

return p
Advertisement