Documentation for this module may be created at Module:Sandbox/Qwerfjkl/doc
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
end
end
-- 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 i
end
-- 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 check1
end
p.main = function (frame)
return getBiggestArchiveNum('User:Qwerfjkl/sandbox/', 1)
end
return p