Module:Navbox: Difference between revisions

From Wiki of ZZT
Jump to navigation Jump to search
(Initial draft navbox module)
 
No edit summary
Line 1: Line 1:
local p = {}
local p = {}


function p.box(frame)
function p.navbox(frame)
local title = frame.args.title
local title = frame.args.title
if title == nil then
if title == nil then

Revision as of 03:21, 18 January 2021

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")

	-- 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")
		if group.name == nil then
			group_row:tag("td"):attr("colspan", "2"):wikitext(group.content)
		else
			group_row:tag("th"):wikitext(group.name)
			group_row:tag("td"):wikitext(group.content)
		end
	end

	return navbox
end

return p