Module:Government/list
Jump to navigation
Jump to search
Documentation [edit]
This is a data module to be used with mw.loadData. It parses the regular text list and returns the formatted data structure. This is meant to be an easy way to keep external lists in sync with the wiki.
See the comments at the top for how to modify the list. Only edit between the marked lines. Please check for errors before saving.
If changes to functionality are needed, please contact an administrator.The above documentation is transcluded from Module:Government/list/doc.
--The list must follow this format:
-- *Game/category blocks separated by a series of at least one hyphen on its own line
-- *Game/category name on its own line at the beginning of the block
-- *Each position on its own line as follows:
-- position name - position holder(s) separated by a comma and space
-- Optionally, each position holder can have a specialization specified in square brackets preceded by a space, e.g.
-- Position - Person [duties], Some Guy, Other Person [other duties]
-- Therefore, names cannot contain square brackets.
-- *Do not pluralize position names, and don't use abbreviations. These are added in Module:Government.
-- *For a position that is defined but currently vacant, leave the line blank after the separator ( - ).
-- *Empty lines can be used for readability and will be ignored.
--The intention is that the list can be maintained elsewhere and copy-pasted here when an update is needed, or vice versa.
--To smoke-test changes, type =p in the console below and press Enter. It should return "table".
--only edit below the following line
local list = [=[
----
Community
Executive - Lord of Darkness, Frawley, Jesse End, Gandroff
Director - Marina [NationStates], Ender [Events], Xoriet [Moderation]
Senior Moderator - Dan100, Marina, saxasm, Xoriet
Moderator - Callisto, Greatkitteh, Nijil1
----
NationStates
Empress - Marina
Regent - Syberis
Senator of Military Affairs - Ender, Greatkitteh
Senator of Internal Affairs - Greyghost, Honourbound, Dio
Senator of Foreign Affairs - Callisto
Senate Advisor - Ivan Moldavi, Lord of Darkness
Praefectus - Chi
----
Cyber Nations
Emperor - Lord of Darkness
Regent - Jesse End
Imperial Officer - SeasonsofLove
Counselor - Emperor Ice
Exarch - jgolla, Llednar Twem, Edward I, Amyameretta
General - Eclipse
Colonel -
Prefect - Madd
Tribune - Knight
----
Torn
Emperor - JesseEnd
Regent - Selina
Imperial Officer of Economic Affairs - OsRavan
Imperial Officer of Internal Affairs -
Imperial Officer of Military Affairs - Callisto, Lord of Darkness
Governor (Strength) - Pep_9090
Governor (Prosperity) - Nijil1
Governor (Endurance) - Elegarth
Governor (Valour) - Terekhov
Councilor (Strength) - Severisen
Councilor (Prosperity) - Grease_Monkey, ortibeX
Councilor (Endurance) - Calirin
Councilor (Valour) - DeathlySmokey, Brutus5149, PANDA-
Councilor (Serenity) - looneylew
Advisor - jgolla
General -
Colonel - Gandroff, sngg, pixxie, TowerQueen
Captain -
Provost - Selina
Deputy Provost (Instructors) - DeathlySmokey
Deputy Provost (Recruitment) - Fearax
Pacific Financial Executive - Nerdypeep
Deputy Executive - Grease_Monkey, Iceknave
]=]--only edit above this line
--the separator between position names and occupants
local sep = ' - '
local function strip(s)
--trim, lowercase, and remove non-alphanumeric characters. Also used in base module
return mw.text.trim(mw.ustring.gsub(mw.ustring.lower(s or ''), '%W', ''))
end
local struct = {}
for game in mw.text.gsplit(list, '\n%-+\n') do
local title = nil
local positions = {}
for line in mw.text.gsplit(game, '\n') do
line = mw.text.trim(line)
if line ~= '' then
if not title then
title = line
else
local incumbent
local subStart, subEnd = mw.ustring.find(line, sep, 1, true)
if not subStart or not subEnd then
--Check if separator is the last thing on the line (means vacant position)
line = line .. ' '
subStart, subEnd = mw.ustring.find(line .. ' ', sep, 1, true)
if not subStart or not subEnd then
return '<span class="error">Parse error in [[Module:Government/list]]: ' .. line .. '</span>'
else
--Expected format in parent module for vacant position
incumbent = ''
end
else
incumbent = mw.text.trim(mw.ustring.sub(line, subEnd + 1))
end
positions[strip(mw.ustring.sub(line, 1, subStart - 1))] = incumbent
end
end
end
if title then
struct[strip(title)] = positions
end
end
return struct