|
|
Line 789: |
Line 789: |
| :wikitext(self:renderImage()) | | :wikitext(self:renderImage()) |
| return tostring(root) | | return tostring(root) |
| end
| |
|
| |
| --------------------------------------------------------------------------------
| |
| -- Documentation class
| |
| --------------------------------------------------------------------------------
| |
|
| |
| local Documentation = class('Documentation')
| |
|
| |
| function Documentation:initialize(cfg)
| |
| self._cfg = cfg
| |
| end
| |
|
| |
| function Documentation:makeReasonTable()
| |
| -- Get the data from the cfg.banners table.
| |
| local rowData = {}
| |
| for action, reasonTables in pairs(self._cfg.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 msg = self._cfg.msg
| |
| local ret = {}
| |
| ret[#ret + 1] = '{| class="wikitable"'
| |
| if #rowData < 1 then
| |
| ret[#ret + 1] = '|-'
| |
| ret[#ret + 1] = string.format(
| |
| '| colspan="3" | %s',
| |
| msg['documentation-blurb-noreasons']
| |
| )
| |
| else
| |
| -- Header
| |
| ret[#ret + 1] = '|-'
| |
| ret[#ret + 1] = string.format(
| |
| '! %s\n! %s\n! %s',
| |
| msg['documentation-heading-reason'],
| |
| msg['documentation-heading-action'],
| |
| msg['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
| |
| )
| |
| end
| |
| end
| |
| ret[#ret + 1] = '|}'
| |
|
| |
| return table.concat(ret, '\n')
| |
| end | | end |
|
| |
|
Line 874: |
Line 806: |
| Padlock = Padlock, | | Padlock = Padlock, |
| } | | } |
| end
| |
|
| |
| function p.reasonTable()
| |
| local cfg = mw.loadData('Module:Protection banner/config')
| |
| local documentationObj = Documentation:new(cfg)
| |
| return documentationObj:makeReasonTable()
| |
| end | | end |
|
| |
|