Module:Government
Documentation [edit]
This page is a stub - it only covers the very basics of its subject. More information should be added to make the page informative and useful. If no more information is available, the page should be considered for a merge, redirect, or deletion.
Details: documentation to be written
If you can correct the issue, please edit the page to do so, then remove this notice.
Please see Template:Gov for usage information. Use the template rather than invoking the module. Data for this module is imported from Module:Government/list.Details: documentation to be written
If you can correct the issue, please edit the page to do so, then remove this notice.
The above documentation is transcluded from Module:Government/doc.
local list = mw.loadData('Module:Government/list')
local p = {}
--keys must be lowercase with spaces removed, all input will be converted as such
local shortcuts = {
admin = 'Administrator',
io = 'Imperial Officer',
mod = 'Moderator',
}
local function strip(s)
--trim, lowercase, and remove non-alphanumeric characters - same as in /list
return mw.text.trim(mw.ustring.gsub(mw.ustring.lower(s or ''), '%W', ''))
end
local function link(name, game)
if game == 'Community' then
return '[' .. '[' .. name .. ']]'
else
return mw.getCurrentFrame():expandTemplate({ title='gamepage', args={ name, game=game } })
end
end
function p.main(frame)
return p.call(frame:getParent().args)
end
function p.call(args)
--separator between officeholders in /list
local sep = ', '
local game = args[1]
local position = args[2]
local bullet = strip(args.bull)
local text = ''
local incumbent
if not game or not position then
return '<span class="error">game and position must be specified</span>'
end
if not list[strip(game)] then
return '<span class="error">invalid government category: ' .. game .. '</span>'
end
if shortcuts[strip(position)] then
position = shortcuts[strip(position)]
end
incumbent = list[strip(game)][strip(position)]
if not incumbent then
return '<span class="error">invalid government position: ' .. position .. '</span>'
elseif incumbent == '' then
return "''vacant''"
end
if bullet == 'yes' then bullet = true elseif bullet == 'no' then bullet = false else bullet = nil end
if not mw.ustring.find(incumbent, sep, 1, true) then
--add bullet only if specified on
if bullet then text = text .. '*' end
text = text .. link(incumbent, game)
else
--add bullet if not specified off
if bullet ~= false then bullet = true end
for holder in mw.text.gsplit(incumbent, sep, true) do
if bullet then text = text .. '*' end
text = text .. link(holder, game) .. '\n'
end
if not bullet then
text = mw.ustring.gsub(mw.text.trim(text), '\n', ', ')
end
end
return mw.text.trim(text)
end
return p