Module:Sandbox/Qwerfjkl Explained

local p = -- Checks whether a page exists, going through pcall-- in case we are over the expensive function limit.local function checkPageExists(title) if not title then error('No title passed to checkArchiveExists', 2) end local noError, titleObject = pcall(mw.title.new, title) if not noError then -- If we are over the expensive function limit then assume -- that the page doesn't exist. return false else if titleObject then return titleObject.exists else return false -- Return false if given a bad title. end endend

-- Checks every nth archive to see if it exists, and returns the-- number of the first archive that doesn't exist. It is-- necessary to do this in batches because each check is an-- expensive function call, and we want to avoid making too many-- of them so as not to go over the expensive function limit.local function checkArchives(prefix, n, start) local i = start local exists = true while exists do exists = checkPageExists(prefix .. tostring(i)) if exists then i = i + n end end return iend

-- Return the biggest archive number, using checkArchives-- and starting in intervals of 1000. This should get us a-- maximum of 500,000 possible archives before we hit the-- expensive function limit.local function getBiggestArchiveNum(prefix, start) start = start or 1 local check1000 = checkArchives(prefix, 1000, start) if check1000

start then return 0 -- Return 0 if no archives were found. end local check200 = checkArchives(prefix, 200, check1000 - 1000) local check50 = checkArchives(prefix, 50, check200 - 200) local check10 = checkArchives(prefix, 10, check50 - 50) local check1 = checkArchives(prefix, 1, check10 - 10)

return check1endp.main = function (frame) return getBiggestArchiveNum('User:Qwerfjkl/sandbox/', 1)endreturn p