Modul:Politisk parti
Modul:Politisk parti bruges til at hente standardiserede oplysninger om politiske partier på dansk Wikipedia. Modulet benyttes bl.a. af ValgInfoboks og andre skabeloner, der kræver partifarver, forkortelser og kortnavne.
Funktion
Modulet giver adgang til oplysninger via funktionen fetch eller den interne funktion _fetch.
Den finder automatisk partiets data i de relevante under-moduler:
Modul:Politisk parti/AModul:Politisk parti/B- …
Modul:Politisk parti/ØModul:Politisk parti/Å
Modulet håndterer også aliaser via alternate-tabeller (fx Socialdemokraterne → Socialdemokratiet).
Tilgængelige felter
Et opslag kan returnere følgende oplysninger:
color– partiets officielle farve (HTML-hex eller farvenavn)abbrev– partiets bogstavshortname– kort navn til visning i tabellercolour– alias forcolor- Fallbacks træder i kraft hvis data mangler
Brug
Simpel brug
Hent en farve for et parti:
{{#invoke:Politisk parti|fetch|Socialdemokratiet|color}}
Kortnavn:
{{#invoke:Politisk parti|fetch|Venstre|shortname}}
Med fejlbesked
{{#invoke:Politisk parti|fetch|Det Findes Ikke|color|error=Ukendt parti}}
Eksempler
Eksempel 1: Standard farve
{{#invoke:Politisk parti|fetch|Socialdemokratiet|color}}
Eksempel 2: Alias
{{#invoke:Politisk parti|fetch|Socialdemokraterne|color}}
Eksempel 3: Kortnavn og bogstav
{{#invoke:Politisk parti|fetch|Enhedslisten|shortname}}
{{#invoke:Politisk parti|fetch|Enhedslisten|abbrev}}
Fallbacks
Modulet håndterer manglende felter automatisk:
- Manglende farve
• Returnerer #F8F9FA (infoboks-baggrund)
- Manglende shortname
• Returnerer partiets bogstav eller partinavn
- Manglende abbrev
• Returnerer kortnavn eller partinavn
Fejlkategorier
Modulet kategoriserer sider automatisk, hvis nødvendige oplysninger mangler:
Pages using Political party with unknown partyPages using Political party with missing shortnamePages using Political party with missing color
Moduloversigt
Modulet består af følgende:
-- hent modul-data
p._fetch(args)
-- wrapper til skabelonbrug
p.fetch(frame)
Se også
Data sider
- Politisk parti/A
- Politisk parti/B
- Politisk parti/C
- Politisk parti/D
- Politisk parti/E
- Politisk parti/F
- Politisk parti/G
- Politisk parti/H
- Politisk parti/I
- Politisk parti/J
- Politisk parti/K
- Politisk parti/L
- Politisk parti/M
- Politisk parti/N
- Politisk parti/O
- Politisk parti/P
- Politisk parti/Q
- Politisk parti/R
- Politisk parti/S
- Politisk parti/T
- Politisk parti/U
- Politisk parti/V
- Politisk parti/W
- Politisk parti/X
- Politisk parti/Y
- Politisk parti/Z
local p = {}
local yesno = require('Module:Yesno')
local args = {}
local default_color = '#F8F9FA'
-- Hjælp til fejlvisning
local function create_error(error_message)
return string.format('<strong class="error">%s</strong>', error_message)
end
-- Første bogstav i partinavn (til submodul-navn)
local function getFirstLetter(party)
local index = mw.ustring.sub(party, 1, 1)
if string.match(index, '%A') then
return '1' -- ikke-bogstaver
end
return string.upper(index)
end
-- Trim, delink og fjern ekstra whitespace
local function stripToNil(text)
if type(text) == 'string' then
local delink = require('Modul:Delink')._delink
text = text:match('(%S.-)%s*$')
text = delink({ text, wikilinks = "target" })
text = mw.text.trim(text)
end
return text
end
-- Normaliser partinavne til sammenligninger
local function normalizePartyName(name)
if not name then return nil end
name = mw.ustring.lower(name)
name = mw.text.trim(name)
name = mw.ustring.gsub(name, '%s+', ' ')
name = mw.ustring.gsub(name, '%s*%(', '(')
name = mw.ustring.gsub(name, '%)%s*', ')')
name = mw.ustring.gsub(name, '[’‘`]', "'")
return name
end
-- Find party info i alle moduler
local function findPartyInfo(party)
local party_norm = normalizePartyName(party)
local index = getFirstLetter(party)
local ok, data = pcall(mw.loadData, 'Modul:Politisk parti/' .. index)
if not ok then
return nil
end
-- Direkt match
if data.full and data.full[party] then
return data.full[party]
end
-- Alias match
for alias, real in pairs(data.alternate or {}) do
alias = mw.ustring.lower(alias)
if alias == party_norm then
if data.full[real] then
return data.full[real]
else
local aliasIndex = getFirstLetter(real)
if aliasIndex ~= index then
local ok2, aliasData = pcall(mw.loadData, 'Modul:Politisk parti/' .. aliasIndex)
if ok2 and aliasData.full then
return aliasData.full[real]
end
if aliasData.full then
return aliasData.full[real]
end
end
end
end
end
return nil
end
-- Hovedfunktion
function p._fetch(args)
if not args[1] then return create_error("parameter 1 should be a party name.") end
if not args[2] then return create_error("parameter 2 should be the output type.") end
local party = stripToNil(args[1])
local out_type = stripToNil(args[2])
if out_type == 'colour' then out_type = 'color' end
local party_info = findPartyInfo(party)
-- Hvis intet fundet
if not party_info then
if out_type == 'color' then
return args.error or default_color
else
return args.error or party
end
end
-- Hent ønsket felt
local return_value = party_info[out_type]
-- Håndter tomme felter
if return_value == "" or return_value == nil then
if out_type == 'color' then
return args.error or create_error("Value not in template. Please request that it be added.")
elseif out_type == 'abbrev' then
return (party_info.shortname ~= "" and party_info.shortname) or party
elseif out_type == 'shortname' then
return (party_info.abbrev ~= "" and party_info.abbrev) or party
else
return party
end
end
-- HTML-sikker farvekode
if out_type == 'color' and string.find(return_value, '#') then
return_value = string.gsub(return_value, '#', '#')
end
return return_value
end
-- Wrapper til Frame
function p.fetch(frame)
local getArgs = require("Modul:Arguments").getArgs
local args = getArgs(frame)
return p._fetch(args)
end
return p