Module:Party name with color
Documentation for this module may be created at Module:Party name with color/doc
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 local function getData(args) local display_name = nil local yesno = require('Module:Yesno') if args[1] == "Independent" then args[1] = "Independent politician" end if yesno(args.dab) == true then display_name = args[1] elseif yesno(args.full) == true 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 if yesno(args.bold) == true then display_name = "'''" .. display_name .. "'''" end local text = nil if yesno(args.no_link) == true 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 return text, color end function p._cell(args) if not args[1] then return '' end local text, color = getData(args) 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._box(args) if not args[1] then return '' end local text, color = getData(args) local seats if args.seats then seats = ' (' .. args.seats .. ')' end seats = seats or '' local outline = args.outline or 'black' local legend = '<span class="legend nowrap" style="page-break-inside:avoid;break-inside:avoid-column"><span class="legend-color" style="display:inline-block;min-width:1.25em;height:1.25em;line-height:1.25;margin:1px 0;border:1px solid ' .. outline .. ';background-color:' .. color .. '"> </span> ' .. text .. seats .. '</span>' return legend 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', 'bold' }, frame:getParent().args) return p._cell(args) .. tracking end function p.box(frame) local getArgs = require('Module:Arguments').getArgs local args = getArgs(frame) return p._box(args) end return p