Module:Political party
This module is rated as ready for general use. It has reached a mature form and is thought to have only few to no bugs and is ready for use wherever appropriate. It is ready to mention on help pages and other essential Wikipedia resources as an option for new users to learn. To reduce server load and bad output as well as confusion, it should be improved by sandbox testing rather than repeated trial-and-error editing. |
Þessi skrifta notar eftirfarandi skriftur: |
Þetta er skrifta sem inniheldur litakóða fyrir þingflokka um allan heim.
Notkun
[breyta frumkóða]{{Political party|fetch|<flokkur>|<gildi>}}
Uppfærsla á skriftu
[breyta frumkóða]Þingflokkarnir sem eru tilgreindir í þessari skriftu eru flokkaðir í stafrófsröð. Hver fyrsti stafur er á sér síðu (til dæmis er "Alþýðubandalagið" undir /A).
Á hverri síðu eru tveir hópar: local alternate
and local full
.
Vara (Alternate) nöfn þingflokka
[breyta frumkóða]Flokkurinn vara er fyrir önnur nöfn flokksins. Aðalnafn er alltaf titill greinarinnar um flokkinn, varanöfn geta verið einföldun á því nafni. Eftirfarandi eru varanöfn Framsóknarflokksins:
local alternate = {
....
["Framsókn"] = "Framsóknarflokkurinn",
...
}
Fyrsta atriðið innan hornklofanna er varanafnið, og síðara atriðið innan gæsalappa er nafnið sem finnst undir heildar hópnum, eins og farið verður yfir neðar á síðunni. Athugaðu að varanafn flokks verður að vera á réttri síðu, þeirri sem hefur fyrsta staf flokksins í titlinum. Til dæmis myndi Sjálfstæðisflokkur Finnlands (finnska: Kansalaisliitto) hafa skammstöfunina og varanafnið IPU. Varanafnið IPU væri undir /I, þar sem það er fyrsti stafur skammstöfununnar, þó svo að aðalnafnið byrji á /S.
Gildi í töflu
[breyta frumkóða]local full = {
....
["Verkamannaflokkurinn (Bretland)"] = {abbrev = "Lab", color = "#E4003B", shortname = "Labour",},
...
}
Fyrir hvern stjórnmálaflokk eru geymd þrjú gildi:
- Skammstöfunin undir
abbrev
. - Litakóði flokksins undir
color
, sem getur verið hex kóði (t.d. #FFFFFF) eða grunnheiti litar. - Stytting á nafni flokksins undir
shortname
.
Þessi þrjú gildi þurfa ekki að vera einstök á meðal annara flokka. Varanöfn og aðalnöfn flokka þurfa hinsvegar að vera einstök.
Ef nafn flokks er ekki tilgreint þá mun skriftan skila öðru stuttu nafni flokksins. Þannig ef abbrev
er tilgreint en shortname
er það ekki, þá mun skriftan skila skammstöfuninni (abbrev
), óháð því hvoru gildinu sé óskað eftir.
Gagnasíður
[breyta frumkóða]- Political party/A
- Political party/Á
- Political party/B
- Political party/C
- Political party/D
- Political party/E
- Political party/É
- Political party/F
- Political party/G
- Political party/H
- Political party/I
- Political party/Í
- Political party/J
- Political party/K
- Political party/L
- Political party/M
- Political party/N
- Political party/O
- Political party/Ó
- Political party/P
- Political party/Q
- Political party/R
- Political party/S
- Political party/T
- Political party/U
- Political party/Ú
- Political party/V
- Political party/X
- Political party/Y
- Political party/Þ
- Political party/Æ
- Political party/Ö
local p = {}
local default_color = '#F8F9FA'
local categories = {
party_not_in_list = '[[Category:Pages using Political party with unknown party]]',
shortname_not_in_list = '[[Category:Pages using Political party with missing shortname]]',
color_not_in_list = '[[Category:Pages using Political party with missing color]]',
}
local function create_error(error_message)
return string.format('<strong class="error">%s</strong>', error_message)
end
local function getFirstLetter(party)
local index = mw.ustring.sub(party, 1, 1)
-- Set index for non-A-Z starts
if mw.ustring.match(index, '%A') then
return '1'
end
return mw.ustring.upper(index)
end
local function stripToNil(text)
-- If text is a string, return its trimmed content, or nil if empty.
-- Otherwise return text (which may, for example, be nil).
if type(text) == 'string' then
text = mw.ustring.match(text, '(%S.-)%s*$')
local delink = require('Module:Delink')._delink
text = delink({text, wikilinks = "target"})
end
return text
end
-- Example of having all the data - color and names - in one table. Requires one page to be edited instead of two when adding a new party.
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 index = getFirstLetter(party)
-- Load data from submodule
local data -- lazy load
local data_all
local party_alt
if index and mw.title.new('Political party/' .. index, 'Module') and mw.title.new('Political party/' .. index, 'Module').exists then
data = mw.loadData('Module:Political party/' .. index)
data_all = data.full
party_alt = data.alternate[party]
end
local party_info
if party_alt then
if data_all[party_alt] then
party_info = data_all[party_alt]
else
index = getFirstLetter(party_alt)
data = mw.loadData('Module:Political party/' .. index)
party_info = data.full[party_alt]
end
elseif data_all then
party_info = data_all[party]
end
-- Check if database value exists
-- * Not even in database - return given error or input
-- * No color - return error
-- * No shortname/abbrev - return first non-blank of abbrev->shortname->input
if not party_info then
if out_type == 'color' then
return args.error or default_color
else
return args.error or party
end
end
local return_value = party_info[out_type]
if return_value == "" 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
if party_info.shortname ~= "" then
return party_info.shortname
else
return party
end
elseif out_type == 'shortname' then
if party_info.abbrev ~= "" then
return party_info.abbrev
else
return party
end
else
return party
end
end
if out_type == 'color' and mw.ustring.find(return_value, '#') then
return_value = mw.ustring.gsub(return_value, '#', '#')
end
return return_value
end
function p.fetch(frame)
-- Initialise and populate variables
local getArgs = require("Module:Arguments").getArgs
local args = getArgs(frame)
return p._fetch(args)
end
return p