Module:Sandbox/BrownHairedGirl/CanElecResTopTest

This is an old revision of this page, as edited by BrownHairedGirl (talk | contribs) at 12:41, 26 June 2019 (test month). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
local p = {}
local getArgs = require('Module:Arguments').getArgs

local validmonth = {
	["january"] = "OK",
	["february"] = "OK",
	["march"] = "OK",
	["april"] = "OK",
	["may"] = "OK",
	["june"] = "OK",
	["july"] = "OK",
	["august"] = "OK",
	["september"] = "OK",
	["october"] = "OK",
	["november"] = "OK",
	["december"] = "OK"
}

	
function isValidMonth(s)
	local mymonth = mw.ustring.gub(s, "^%s*(.*%S)%s+%d%d%d%d%s*$", "$1")
	
	if (validmonth[string.lower(mymonth)] == "OK") then
		return true
	end
	return false
end

function p.main(frame)
	local rawcats = {}
	local nvalid = 0
	local args = getArgs(frame)

	local listedargslist = "";
	for i, v in ipairs(frame.args) do
		listedargslist = listedargslist .. "* i=[" .. i .. "]       v = [" .. v .."]\n"
	end
	
	local electionyear =args['electionyear'];
	
	if (electionyear == nil) then
		electionyear = ""
	end
	
	listedargslist = listedargslist .. "electionyear = [" .. electionyear .. "]\n"
	
	if ((electionyear == nil) or (mw.ustring.match(electionyear, "^%s*$") ~= nil)) then
		return listedargslist .. "[[:Category:CanElecResTopTest with nil value]]"
	elseif (mw.ustring.match(electionyear, "^%s*%d%d%d%d%s*$") ~= nil) then
		return listedargslist .. "[[:Category:CanElecResTopTest with bare year]]"
	elseif (mw.ustring.match(electionyear, "^.*%s+%d%d%d%d%s*$") ~= nil) then
		if (isValidMonth(electionyear)) then
			return listedargslist .. "[[:Category:CanElecResTopTest with month year]]"
		else
			return listedargslist .. "[[:Category:CanElecResTopTest with something before year]]"
		end
	else
		return listedargslist .. "[[:Category:CanElecResTopTest with unrecognised value]]"
	end
end

return p