Edge Rewrite
// HTMLRewriter · presentation

This page was redesigned at the edge.

Cloudflare fetched the original article and streamed it through HTMLRewriter to apply an entirely new visual system without rebuilding the source page.

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