Modul:Partifarve
Udseende
Modul:Partifarve finder en standardfarve for et politisk parti, enten i en metafarveskabelon eller på Wikidata. Se dokumentationen Skabelon:Partifarve for flere oplysninger om virkemåde.
Brug
[rediger kildetekst]- Fra skabeloner
{{#invoke:Partifarve|partifarve}}
Parametre overføres fra den kaldende skabelon.
- Fra moduler
require('Modul:Partifarve')._partifarve(party_name, lang, frame)
Kun party_name
er obligatorisk.
--[[ Modul til at finde partifarve for et politisk ud fra partinavnet. ]]
local p = {}
require('Modul:No globals')
local function get_color_from_meta_template(frame, party_name, template_name)
mw.log("get_color_from_meta_template: Prøver '" .. party_name .. '/meta/' .. template_name .. "'")
local template = party_name .. '/meta/' .. template_name
local title = mw.title.makeTitle('Template', template)
if title.exists then
mw.log ("fundet")
return frame:expandTemplate{title = template, args = {} }
end
mw.log ("ikke fundet")
return nil
end
function p._partifarve(party_name, lang, frame)
party_name = mw.text.trim(party_name) -- Remove whitespace at start and end
mw.logObject(party_name, "party_name")
--[=[ Udtræk linknavnet fra et eventuelt link af typen "[[link|label]]"
eller af typen "link|label" (Bruges fx i Infoboks valg og Infoboks valg1).
Afslut også partinavnet ved forekomst af ASCII tegnet \127 som strip markers
(forekommer fx hvis der er fodnoter) starter med.
]=]
local delink = string.match(party_name, '%[?%[?([^|%]\127]*)')
mw.logObject(delink, "delink")
if delink
then party_name = delink
end
if lang == nil then
-- Try for local meta color files
if frame == nil then
frame = mw.getCurrentFrame()
end
local color = get_color_from_meta_template(frame, party_name, 'farve')
if color then return color end
local color = get_color_from_meta_template(frame, party_name, 'color')
if color then return color end
-- Resolve redirects
local article_title = mw.title.new(party_name)
local redirectTarget = article_title.redirectTarget
if redirectTarget ~= false then
mw.log("Er redirect")
mw.logObject(redirectTarget, "redirectTarget")
party_name = redirectTarget.text
else
mw.log("Ikke redirect")
end
end
-- Try Wikidata
local entity_id
if lang then
entity_id = mw.wikibase.getEntityIdForTitle(party_name, lang .. 'wiki')
else
entity_id = mw.wikibase.getEntityIdForTitle(party_name)
end
if entity_id then
mw.logObject(entity_id, 'entity_id')
local statements = mw.wikibase.getBestStatements(entity_id, "P465")
if statements and #statements == 1 and
statements[1].mainsnak and
statements[1].mainsnak.snaktype == 'value' then
mw.log('WD-farve fundet')
return mw.text.nowiki('#' .. statements[1].mainsnak.datavalue.value)
else
mw.log('WD-farve ikke fundet')
end
else
mw.log('entity_id ikke fundet')
end
-- Intet fundet ... sporingskategori?
return mw.text.nowiki('#FFFFFF')
end
function p.partifarve(frame)
local args = (frame == mw.getCurrentFrame()) and frame:getParent().args or frame.args
local party_name = args[1]
local lang = args["sprog"]
return p._partifarve(party_name, lang, frame)
end
return p