Module:Party name with color
Appearance
This module is rated as beta, and is ready for widespread use. It is still new and should be used with some caution to ensure the results are as expected. |
This module depends on the following other modules: |
Usage
[change source]This module implements Template:Party name with color. See the documentation for Template:Party name with color for usage.
-- This module implements [[Template:Party name with color]]
local p = {}
local fetch = nil -- lazy load
local function load_political_party_module()
if fetch == nil then
fetch = require('Module:Political party')._fetch
end
end
local function page_exist(page_name)
if not page_name then return false end
if mw.title.new(page_name).exists then return true end
return false
end
local function simplify_rowspan(text)
text = mw.ustring.gsub(text or '', 'rowspan="1"%s*', '')
return text
end
function p._cell(args)
if not args[1] then return '' end
local display_name = nil
if args.dab then
display_name = args[1]
elseif args.full then
display_name = mw.ustring.gsub(args[1], '%s+%b()$', '')
elseif args.shortname then
display_name = args.shortname
else
load_political_party_module()
display_name = fetch({args[1], 'shortname'})
end
local text = nil
if args.no_link then
text = display_name
else
-- TODO: should this be on by default or do we want red links?
if page_exist(args[1]) then
text = string.format("[[%s|%s]]", args[1], display_name)
else
text = display_name
end
end
local color = args.colour or args.color
if not color then
load_political_party_module()
color = fetch({args[1], 'color'})
end
local line1 = 'rowspan="%s" style="width: 2px; background-color: %s;" data-sort-value="%s" |\n'
local line2 = '| scope="row" rowspan="%s" style="text-align: left;" | %s'
local rowspan = tonumber(args.rowspan) or 1
line1 = string.format(line1, rowspan, color, args[1])
line2 = string.format(line2, rowspan, text)
return simplify_rowspan(line1 .. line2)
end
function p.cell(frame)
local getArgs = require('Module:Arguments').getArgs
local args = getArgs(frame)
local check = require('Module:Check for unknown parameters')._check
local tracking = check({
['unknown']='[[Category:Pages using Party name with color with unknown parameters|_VALUE_ ]]',
['preview']='Page using [[Template:Party name with color]] with unknown parameter "_VALUE_"',
['showblankpositional']='1',
'1', 'color', 'colour', 'dab', 'full', 'no_link', 'rowspan', 'shortname'
}, frame:getParent().args)
return p._cell(args) .. tracking
end
return p