Module:Sandbox/BrownHairedGirl/CanElecResTopTest

local p = {} local getArgs = require('Module:Arguments').getArgs

local diag ="";

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.gsub(s, "^%s*(.*%S)%s+%d%d%d%d%s*$", "$1") local mymonth = mw.ustring.gsub(s, "%s+%d%d%d%d%s*$", "") diag = diag .. "\nmonthparse = [" .. s .. "] / [" .. mymonth .. "]\n" 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" diag = diag .. listedargslist if ((electionyear == nil) or (mw.ustring.match(electionyear, "^%s*$") ~= nil)) then return diag .. "Category:CanElecResTopTest with nil value" elseif (mw.ustring.match(electionyear, "^%s*%d%d%d%d%s*$") ~= nil) then return diag .. "Category:CanElecResTopTest with bare year" elseif (mw.ustring.match(electionyear, "^.*%s+%d%d%d%d%s*$") ~= nil) then if (isValidMonth(electionyear)) then return diag .. "Category:CanElecResTopTest with month year" else return diag .. "Category:CanElecResTopTest with something before year" end else return diag .. "Category:CanElecResTopTest with unrecognised value" end end

return p