Module:Protection banner/documentation

-- This module generates documentation for Module:Protection banner.

local class = require('Module:Middleclass').class

-- Documentation class

local Documentation = class('Documentation')

function Documentation:initialize(mainCfg, docCfg) self._mainCfg = mainCfg self._docCfg = docCfg end

function Documentation:makeReasonTable -- Get the data from the cfg.banners table. local rowData = {} for action, reasonTables in pairs(self._mainCfg.banners) do		for reason, t in pairs(reasonTables) do			rowData[#rowData + 1] = { reason = reason, action = action, description = t.description }		end end

-- Sort the table into alphabetical order, first by action and then by -- reason. table.sort(rowData, function (t1, t2)		if t1.action == t2.action then			return t1.reason < t2.reason		else			return t1.action < t2.action		end	end) -- Assemble a wikitable of the data. local ret = {} ret[#ret + 1] = '{| class="wikitable"' if #rowData < 1 then ret[#ret + 1] = '|-' ret[#ret + 1] = string.format(			'| colspan="3" | %s',			self._docCfg['documentation-blurb-noreasons']		) else -- Header ret[#ret + 1] = '|-' ret[#ret + 1] = string.format(			'! %s\n! %s\n! %s',			self._docCfg['documentation-heading-reason'],			self._docCfg['documentation-heading-action'],			self._docCfg['documentation-heading-description']		) -- Rows for _, t in ipairs(rowData) do			ret[#ret + 1] = '|-' ret[#ret + 1] = string.format(				'| %s\n| %s\n| %s',				t.reason,				t.action,				t.description or ''			) end end ret[#ret + 1] = '|}' return table.concat(ret, '\n') end

-- Exports

local p = {}

function p.reasonTable local mainCfg = mw.loadData('Module:Protection banner/config') local docCfg = mw.loadData('Module:Protection banner/documentation/config') local documentationObj = Documentation:new(mainCfg, docCfg) return documentationObj:makeReasonTable end

return p