More actions
Content deleted Content added
m call it "reasonTable" throughout, rather than switching between "reasonTable" and "reasonsTable" |
move documentation class and export function to Module:Protection banner/documentation |
||
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 |
||