Module:Navbox

From Wiki of ZZT
Jump to navigation Jump to search

Documentation for this module may be created at Module:Navbox/doc

local p = {}

function p.navbox(frame)
	local title = frame.args.title
	if title == nil then
		error("Missing title")
	end

	-- Assign group1, group2, etc to groups
	local groups = {}
	local i = 1
	while frame.args["group" .. i] ~= nil do
		local group = {
			content = frame.args["group" .. i],
			name = frame.args["groupName" .. i] -- can be nil
		}
		table.insert(groups, group)
		i = i + 1
	end

	return make_box(title, groups)
end

function make_box(title, groups)
	local navbox = mw.html.create("table"):addClass("navbox")

	-- Create title row
	local title_row = navbox:tag("tr"):addClass("title")
	title_row:tag("th"):attr("colspan", 2):wikitext(title)

	-- Create row for each group
	for _, group in ipairs(groups) do
		local group_row = navbox:tag("tr"):addClass("group")
		local content = "\n" .. group.content .. "\n"
		if group.name == nil then
			group_row:tag("td"):attr("colspan", "2"):wikitext(content)
		else
			group_row:tag("th"):wikitext(group.name)
			group_row:tag("td"):wikitext(content)
		end
	end

	return navbox
end

return p