Permanently protected module
From Wikipedia, the free encyclopedia


-- This module finds the highest existing archive number for a set of talk

-- archive pages.



local expSearch = require('Module:Exponential search')

local p = {}



local function raiseStartNumberError(start)

	error(string.format(

		'Invalid start number "%s" supplied to [[Module:Highest archive number]] (must be an integer)',

		tostring(start)

	), 3)

end



local function pageExists(page)

	local success, exists = pcall(function()

		return mw.title.new(page).exists

	end)

	return success and exists

end



function p._main(prefix, start)

	-- Check our inputs

	if type(prefix) ~= 'string' or not prefix:find('%S') then

		error('No prefix supplied to [[Module:Highest archive number]]', 2)

	end

	if start ~= nil and (type(start) ~= "number" or math.floor(start) ~= start) then

		raiseStartNumberError(start)

	end

	start = start or 1

	

	-- Do an exponential search for the highest archive number

	local result = expSearch(function (i)

		local archiveNumber = i + start - 1

		local page = prefix .. tostring(archiveNumber)

		return pageExists(page)

	end, 10)

	

	if result == nil then

		-- We didn't find any archives for our prefix + start number

		return nil

	else

		-- We found the highest archive, but the number is always 1-based, so

		-- adjust it for our start number

		return result + start - 1

	end

end



function p.main(frame)

	local args = require('Module:Arguments').getArgs(frame, {

		trim = false,

		removeBlanks = false,

		wrappers = 'Template:Highest archive number'

	})

	local prefix = args1

	

	-- Get the start archive number, if specified.

	local start = args.start

	if start == "" then

		start = nil

	elseif start then

		start = tonumber(start)

		if not start then

			raiseStartNumberError(args.start)

		end

	end



	return p._main(prefix, start)

end



return p
Permanently protected module
From Wikipedia, the free encyclopedia


-- This module finds the highest existing archive number for a set of talk

-- archive pages.



local expSearch = require('Module:Exponential search')

local p = {}



local function raiseStartNumberError(start)

	error(string.format(

		'Invalid start number "%s" supplied to [[Module:Highest archive number]] (must be an integer)',

		tostring(start)

	), 3)

end



local function pageExists(page)

	local success, exists = pcall(function()

		return mw.title.new(page).exists

	end)

	return success and exists

end



function p._main(prefix, start)

	-- Check our inputs

	if type(prefix) ~= 'string' or not prefix:find('%S') then

		error('No prefix supplied to [[Module:Highest archive number]]', 2)

	end

	if start ~= nil and (type(start) ~= "number" or math.floor(start) ~= start) then

		raiseStartNumberError(start)

	end

	start = start or 1

	

	-- Do an exponential search for the highest archive number

	local result = expSearch(function (i)

		local archiveNumber = i + start - 1

		local page = prefix .. tostring(archiveNumber)

		return pageExists(page)

	end, 10)

	

	if result == nil then

		-- We didn't find any archives for our prefix + start number

		return nil

	else

		-- We found the highest archive, but the number is always 1-based, so

		-- adjust it for our start number

		return result + start - 1

	end

end



function p.main(frame)

	local args = require('Module:Arguments').getArgs(frame, {

		trim = false,

		removeBlanks = false,

		wrappers = 'Template:Highest archive number'

	})

	local prefix = args1

	

	-- Get the start archive number, if specified.

	local start = args.start

	if start == "" then

		start = nil

	elseif start then

		start = tonumber(start)

		if not start then

			raiseStartNumberError(args.start)

		end

	end



	return p._main(prefix, start)

end



return p

Videos

Youtube | Vimeo | Bing

Websites

Google | Yahoo | Bing

Encyclopedia

Google | Yahoo | Bing

Facebook