Content deleted Content added
Fix "ongoing" tests |
re-organize, create export function to reduce duplicate code |
||
Line 5:
local fetch = require('Module:Political party')._fetch
-- Helper functions --
local notblank = function (v) return (mw.text.trim(v or "") ~= "") end
local ifblank = function (v, a) return notblank(v) and v or a end
local ucfirst = function (s) return mw.ustring.upper(mw.ustring.sub(s,1,1)) .. mw.ustring.gsub(mw.ustring.sub(s,2), '_', ' ') end
local function
-- Read args from input --
local args = {}
local frameArgs = false
for k,v in pairs(frame.args) do
if notblank(v) then
args[k] = mw.text.trim(v)
frameArgs = true
end
end
if not frameArgs then
for k,v in pairs(frame:getParent().args) do
if notblank(v) then args[k] = mw.text.trim(v) end
end
end
return p[func](args, frame)
end
-- Template:Infobox election/shortname --
function p._shortname(sargs)
local link = sargs.link
local name = sargs.name
if link ~= 'no' and notblank(name) and delink({[1] = name, wikilinks = 'target'}) == name then
-- the below array items are intentionally missing the training 's'
local names = {
independent = '[[Independent politician|' .. name .. ']]',
miscellaneous = '[[Independent politician|DIV]]',
other = 'Others',
['other parties and independent'] = 'Others & [[Independent politician|IND]]',
regionalist = '[[Regionalism (politics)|Regionalists]]',
tbc = '[[To be announced|TBC]]',
tbd = '[[To be announced|TBD]]',
vacant = '[[Casual vacancy|Vacant]]'
}
return names[mw.ustring.gsub(mw.ustring.lower(name), 's$', '')] or
('[[' .. name .. '|' .. fetch({[1] = name, [2] = 'shortname'}) .. ']]')
end
return name or ''
end
p.shortname = function (frame) return export('_shortname', frame) end
-- Template:Infobox election/row --
function p._row(rargs, frame)
local rtype = mw.ustring.lower(rargs.type or '')
local ongoing = rargs.ongoing == 'yes'
Line 17 ⟶ 62:
local function threeCells(cellType, title, always, shortname)
local centeredCell = function (key)
local name = shortname and p._shortname({link = rargs[key .. '_name'], name = rargs[key]}) or (rargs[key] or '')
return ('| style="' .. (notblank(rargs[key]) and 'width:75px;' or '') .. 'text-align:center" | ' .. name )
end
Line 187 ⟶ 232:
end
p.row = function (frame) return export('_row', frame) end
-- Template:Infobox election --
function p._infobox(args, frame)
-- Start defining infobox arguments --
local pagetitle = frame:getParent() and frame:getParent():getTitle() or frame:getTitle()
Line 466 ⟶ 435:
-- Insert data --
table.insert(data10, '|-')
table.insert(data10, _row(
end
Line 478 ⟶ 447:
)
end
p.infobox = function (frame) return export('_infobox', frame) end
return p
|