Jump to content

Module:DBR index

From Wikipedia, the free encyclopedia

local p = {}
local title = mw.title.getCurrentTitle()

-- The point of this module is to keep the [[WP:PEIS]] lower than is possible
-- with nested templates.

local function sizeof(n)
	return tonumber(mw.getCurrentFrame():callParserFunction('PAGESIZE', {title.fullText .. '/' .. n, 'R'}))
end

function p.main(frame)
	local description = frame.args.description or
		frame:getParent().args.description or
		title.subpageText:lower()
	local as_of = '; data as of ' ..
			frame:expandTemplate{ title = title.fullText .. '/1', args = {} } .. '.\n'
	if sizeof(2) > 50 then
		-- Make a bulleted list of pages
		local result = {'Index of ' .. description .. as_of ..
			'<ul><li>[[/1|Page 1]]</li><li>[[/2|Page 2]]</li>'}
		for i = 3, 50 do
			if sizeof(i) > 50 then
				result[#result + 1] = '<li>[[/' .. i .. '|Page ' .. i .. ']]</li>'
			end
		end
		result[#result + 1] = '</ul>'
		return table.concat(result)
	end
	-- There's only one page so extract the table from its content.
	local content = mw.title.new(title.fullText .. '/1'):getContent()
	local wikitable = content:match('{|.*|}')
	-- Copy {{static row numbers}} if it's present too
	local srn = ""
	if content:find("{{static row numbers}}") ~= nil then
		srn = "{{static row numbers}}\n"
	end
	content = frame:getParent():preprocess(srn .. wikitable)
	return mw.getContentLanguage():ucfirst(description) .. as_of .. content
end

return p