Module:Wikimedia engineering project date categories

-- Module to output Category:WMF Projects subcategories -- as appropriate for a start and end date, to be used in --

local p = {} local lang = mw.language.getContentLanguage

local function makeCategory( catdate, trail ) local quarter, year quarter = math.ceil( tonumber( lang:formatDate( "m", catdate ) ) / 3 ) year = lang:formatDate( "Y", catdate ) return "" end

function p.datesToCategories( frame ) local startdate, curdate, enddate local categories = "" local trail = ""

if (not frame.args.startdate) or frame.args.startdate == "" then return "" else curdate = frame.args.startdate if string.len(curdate) < 4 then return "" end if string.len(curdate) == 4 then curdate = curdate .. "-01"   	end end

local title = mw.title.getCurrentTitle if title and title.subpageText and mw.language.isValidCode(title.subpageText) and not (title.subpageText == mw.language.getContentLanguage) then -- Don't populate WMF quarter category with translations of every page return '' end

if (not frame.args.enddate) or frame.args.enddate == "" then -- Ends now enddate = lang:formatDate( "Y-m-d" ) -- Current project categories = categories .. ""   else enddate = frame.args.enddate if string.len(enddate) == 4 then enddate = enddate .. "-12"   	end end

while lang:formatDate( "U", curdate ) < lang:formatDate( "U", enddate ) do       -- Hopefully not so many string as to break the garbage collector. categories = categories .. makeCategory( curdate, trail ) curdate = lang:formatDate( "Y-m-d", curdate .. "+3 months" ) end categories = categories .. makeCategory( enddate, trail ) return categories end

return p