Module:Political party

local p = {}

local function stripToNil(text) -- If text is a string, return its trimmed content, or nil if empty. -- Otherwise return text (which may, for example, be nil). if type(text) == 'string' then text = text:match('(%S.-)%s*$') end return text end

function p.fetch(frame) local party = nil local index = nil local return_value = nil local args = frame.args party = stripToNil(args[1]) or error('parameter 1 should be a party name') out_type = stripToNil(args[2]) or error('parameter 2 should be the output type') index = mw.ustring.sub(party,1,1) local datamod = mw.loadData('Module:Political names/' .. out_type .. '/' .. index) local data_all = datamod.full local data_alt = datamod.alternate return_value = data_all[party] or data_all[data_alt[party]] -- If database value doesn't exist, return input if return_value == nil and frame.args[1] ~= nil then return_value = error('value not in template. Please request that it be added') end return return_value end

function p.main(frame) return p.fetch(frame.args) end

return p