Module:SelectServiceAward

Permanently protected module
From Wikipedia, the free encyclopedia

local p = {}

--A table with the edit requirements for each stage (descending order)
local editreq = {205000, 175000, 150000, 132000, 114000, 96000, 78000, 60000, 51000, 42000, 33000, 28500, 24000, 20000, 16000, 12000, 8000, 6000, 5500, 5000, 4500,
	4000, 3500, 3000, 2500, 2000, 1750, 1500, 1250, 1000, 800, 600, 400, 200, 150, 100, 50, 1}

--A table with the account age requirements for each stage (descending order)
local edittime = {'22 years', '20 years', '18 years', '16 years', '14 years', '12 years', '10 years', '8 years', '7 years', '6 years', '5 years', '4 years + 6 months', 
	'4 years', '3 years + 6 months', '3 years', '2 years + 6 months', '2 years', '1 year + 6 months', '1 year + 4 months + 15 days', '1 year + 3 months', 
	'1 year + 1 month + 15 days', '1 year', '10 months + 15 days', '9 months', '7 months + 15 days', '6 months', '5 months + 8 days', '4 months + 15 days', 
	'3 months + 23 days', '3 months', '2 months + 15 days', '2 months', '1 month + 15 days', '1 month', '23 days', '15 days', '8 days', '1 day'}

function p.main(frame)
	local numedits = tonumber(frame.args.edits)
	local date = frame.args.date
	local noincremental = frame.args.noinc
	local numpos = 0
	
	local time = tonumber(frame:callParserFunction('#time', 'U'))
	
	for i=1, 38 do
		if numedits >= editreq[i] and numpos == 0 then
			local timestr = date .. " + " .. edittime[i]
			local acctime = tonumber(frame:callParserFunction('#time', 'U', timestr))
			if time >= acctime then
				numpos = (39 - i)
			end
		end
	end
	if noincremental == "yes" and numpos > 0 and numpos <= 20 then
		local counter = math.floor( ( numpos - 1 ) / 4 )
		numpos = ( 4 * counter ) + 1
	end
	return (numpos)
end

return p