Halo Esports Wiki
Register
Advertisement
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

To edit the documentation or categories for this module, click here.


local i18n = require('Module:i18nUtil')
local util_table = require("Module:TableUtil")
local p = {}

function p.makeFootnoteN(n)
	if n and n ~= "" then
		return string.format('<sup>%s</sup>', n)
	end
	return ""
end

function p.vsAlign(team1, team2, vs, tbl)
	if not tbl then
		tbl = mw.html.create("div")
	end
	tbl:addClass('vs-align-outer')
	tbl:tag("div")
		:addClass('vs-align-left')
		:wikitext(team1)
	:done()
	:tag("div")
		:addClass('vs-align-vs')
		:wikitext(vs or " vs ")
	:done()
	:tag("div")
		:addClass('vs-align-right')
		:wikitext(team2)
	:done()
		
	return tbl
end

function p.blockBox(content, padding)
	local tbl = mw.html.create('table')
		:addClass('blockbox')
	local tr = tbl:tag('tr')
	local td = tr:tag('td')
	for k, v in ipairs(content) do
		local div = td:tag('div')
		div:css({
			display = "inline-block",
			['vertical-align'] = 'top',
		})
		if padding and k ~= #content then
			div:css('padding-right',padding)
		end
		div:wikitext(v)
	end
	return tbl
end

function p.printEmptySortRow(tbl, n)
	local tr = tbl:tag('tr'):css('font-size','60%')
	for i = 1, n do
		tr:tag('th')
		:wikitext('&nbsp;')
	end
	return
end

function p.printEmptyWidthRow(tbl, widths)
	local tr = tbl:tag('tr'):addClass('empty-width-row')
	for _, v in ipairs(widths) do
		tr:tag('td'):css('width', v):wikitext('&nbsp;')
	end
	return
end

function p.printEmptyWidthRowPX(tbl, widths)
	local tr = tbl:tag('tr'):addClass('empty-width-row')
	for _, v in ipairs(widths) do
		tr:tag('td'):css('width', v .. 'px'):wikitext('&nbsp;')
	end
	return
end

function p.printColspanHeader(tbl, display, colspan, class, width)
	local tr = tbl:tag('tr'):addClass(class)
	local th = tr:tag('th'):addClass('colspan-cell'):attr('colspan', colspan):wikitext(display)
	if width then
		th:cssText(('width:%spx'):format(width))
	end
	return tr
end

function p.printColspanCell(tbl, display, colspan, class, width)
	local tr = tbl:tag('tr'):addClass(class)
	local td = tr:tag('td'):attr('colspan', colspan):wikitext(display)
	if width then
		td:cssText(('width:%spx'):format(width))
	end
end

function p.printHeaderFromI18n(tbl, data)
	local classes = data.classes or {}
	local class = type(classes) == 'string' and classes
	local attrs = data.attrs or {}
	local tr = tbl:tag('tr')
		:addClass(classes.row)
	for _, v in  ipairs(data) do
		local th = tr:tag('th')
			:addClass(class or classes[v] or '')
			:wikitext(i18n.print(v))
		for attr, val in pairs(attrs[v] or {}) do
			th:attr(attr, val)
		end
	end
	return tr
end

function p.printRowsByList(tbl, data, list)
	-- data is an array of tables
	for _, row in ipairs(data) do
		p.printRowByList(tbl, row, list)
	end
	return
end

function p.printRowByList(tbl, row, list)
	local classes = util_table.mergeAndConcat(row.classes or {}, ' ', list.classes)
	local attrs = row.attrs or {}
	local tr = tbl:tag('tr')
	for _, class in ipairs(classes) do
		tr:addClass(class)
	end
	for _, item in ipairs(list) do
		local td = tr:tag('td')
			:addClass(classes[item] or '')
		for k, v in pairs(attrs[item] or {}) do
			td:attr(k, v)
		end
		if row[item] then
			td:wikitext(tostring(row[item]))
		end
	end
	return tr
end

function p.printHelpText(div, text)
	local questionmark = div:tag('div')
		:addClass('helptext-questionmark')
	questionmark:tag('div')
		:addClass('helptext')
		:wikitext(text)
end

function p.clear(tbl)
	if not tbl then tbl = mw.html.create() end
	tbl:tag('div'):addClass('clear')
	return tbl
end

function p.innerColspanTable(tbl, colspan)
	local th = p.innerColspanCellOnly(tbl, colspan)
	local tblNew = th:tag('table'):addClass('nested-table wikitable')
	return tblNew
end

function p.innerColspanCellOnly(tbl, colspan)
	local th = tbl:tag('tr'):tag('th')
		:attr('colspan', colspan)
		:addClass('nested-table-outer')
	return th
end

function p.makeFlatlist(tbl)
	local div = mw.html.create('div')
		:addClass('hlist')
	local ul = div:tag('ul')
	for _, v in ipairs(tbl) do
		ul:tag('li'):wikitext(v)
	end
	return div
end

function p.lastChild(tbl)
	return tbl.nodes[#tbl.nodes]
end

function p.mapChildren(tbl, f, ...)
	for _, node in ipairs(tbl.nodes) do
		f(node, ...)
	end
end

function p.printVerticalData(tbl, data, list)
	for _, v in ipairs(list) do
		if data[v] then
			local tr = tbl:tag('tr')
			tr:tag('th'):wikitext(i18n.print(v))
			tr:tag('td'):wikitext(data[v])
		end
	end
end

return p
Advertisement