Module:XfD old/AfD and MfD

-- Various hacky solutions to allow AfD and MfD to show up on Template:XFD Backlog -- AfD is easy, as User:Mathbot already summarizes the total on each day local p = {} local lang = mw.getContentLanguage function p.afd(frame) local month = frame.args.month local pat if month == "total" then pat = "%(([0-9]+) open"	else		month = lang:formatDate("Y F", month)		pat = "%[%[Wikipedia:Articles for deletion/Log/" .. month .. "[^%]]*%]%] %(([0-9]+) open /" end local content = mw.title.new("Wikipedia:Articles for deletion/Old"):getContent local count = 0 for daycount in content:gmatch(pat) do		count = count + daycount end return count end -- MfD is much harder, because the only list of all active MfDs is the main -- Miscellany for deletion page itself function p.mfd(frame) local month = frame.args.month local content = mw.title.new("Wikipedia:Miscellany for deletion"):getContent local rightmonth = true local pat; if month ~= "total" then pat = lang:formatDate("^=== ?F [0-9]*, Y ?===$", month) rightmonth = false end local _, endindex = content:find("==Old business==") local count = 0 for line in mw.text.gsplit(content:sub(endindex,#content), "\n") do		if line:find("{{Wikipedia:Miscellany for deletion/") and rightmonth then count = count + 1 elseif month == "total" then -- don't worry about month section headers elseif line:find(pat) then rightmonth = true elseif line:find("=== ?.* ?===") then -- A section header for the wrong month if rightmonth then -- We're now looking at MfDs before the month in question break end -- We still haven't reached the month in question yet end end return count end -- RfD is even worse, since I have to manually parse all log pages -- and "Old" discussions aren't displayed separately from "Current" ones function p.rfd(frame) local month = frame.args.month local content = mw.title.new("Wikipedia:Redirects for discussion"):getContent -- First find the daily pages local ymd = require("Module:YMD to ISO")._main local lang = mw.getContentLanguage local threshold = os.date("%F",os.time - (86400*7)) local total = 0 for line in content:gmatch("{{Wikipedia:Redirects for discussion/Log/.-}}") do		local datestamp = ymd(line:match("{{Wikipedia:Redirects for discussion/Log/(.-)}}")) if datestamp >= threshold then -- These dicussions aren't seven days old yet elseif month == "total" or month == lang:formatDate("F Y", datestamp) then local dayContent = mw.title.new(line:match("{{(.*)}}")):getContent -- unreliable but performance is important local _, sectionHeads = dayContent:gsub("==== ?[^\n]- ?====", "") local _, closeBoxes = dayContent:gsub("boilerplate rfd vfd xfd%-closed", "") local _, relisted = dayContent:gsub("% Relisted", "") total = total + (sectionHeads - closeBoxes - relisted) -- else discussion is wrong month end end return total end return p