Modul:Political party
Ta modul je ocenjen kot pripravljen za splošno uporabo. Dosegel je zrelo obliko in naj bi bil razmeroma brez napak ter pripravljen za uporabo, kjer je to primerno. Lahko ga omenite na straneh pomoči in v drugih virih o Wikipediji kot možnost za učenje novih uporabnikov. Da bi zmanjšali obremenitev strežnikov in slab izhod, ga je treba izboljšati s testiranjem v peskovniku, namesto ponavljajočega se urejanja poskusov in napak. |
Predloga se uporablja na številnih straneh, zato bo vsaka njena sprememba takoj zelo opazna. Prosimo, da vse spremembe, ki jih želite uvesti, pred uvedbo preizkusite na podstraneh predloge (/peskovnik in /testniprimeri) ali na svojih lastnih podstraneh. Pred spreminjanjem te predloge se o želenih spremembah rajši pogovorite na pogovorni strani. |
Uporablja Lua: |
Uporaba
[uredi kodo]{{#invoke:Political party|fetch|<party>|<value>}}
Parametri
[uredi kodo]Parameter | Opis |
---|---|
1 | The political party's name. If a party is not found, place a request at the talk page. |
2 | The value requested. Currently supported values are abbrev , color , and shortname .
|
error | Optional, this parameter will return the provided |error= value if the module does not contain the requested party or color.
|
Zgledi
[uredi kodo]Here are some examples using the Labour Party (note that there are multiple potential input names):
["Labour and Co-operative"] = "Labour Party (UK)",
["Labour Co-operative"] = "Labour Party (UK)",
...
["Labour Party (Thailand)"] = {abbrev = "", color = "#FF0000", shortname = "",},
["Labour Party (UK)"] = {abbrev = "Lab", color = "#E4003B", shortname = "Labour",},
{{Political party|Labour Party (UK)|abbrev}}
→ Lab{{Political party|Labour Party (UK)|shortname}}
→ Labour{{Political party|Labour and Co-operative|shortname}}
→ Labour Co-op{{Political party|Labour Co-operative|shortname}}
→ Labour Co-op{{Political party|Labour Party (UK)|color}}
→ #E4003B
If the party is not present in the module, or the shortname or abbreviation are not in the module, the input party name will be returned.
{{Political party|Not-a-party|abbrev}}
→ Not-a-party{{Political party|Not-a-party|shortname}}
→ Not-a-party{{Political party|Not-a-party|color}}
→ #F8F9FA{{Political party|A test no values|shortname}}
→ A test no values
Lua script error messages
[uredi kodo]If either of the required parameters are not supplied, or the color does not exist in the module, an error will be returned.
{{Political party}}
→ parameter 1 should be a party name.{{Political party|A test no values}}
→ parameter 2 should be the output type.{{Political party|A test no values|color}}
→ Value not in template. Please request that it be added.
To avoid generating a script error, use |error=value
. Note that this error value will also be passed if the party is not stored in the module.
{{Political party|A test no values|color|error=ERROR}}
→ ERROR{{Political party|Not-a-party|color|error=ERROR}}
→ ERROR
Glej tudi
[uredi kodo]Sledilne kategorije
[uredi kodo]- Kategorija:Strani, ki uporabljajo Politična stranka z neznano stranko (0)
- Kategorija:Strani, ki uporabljajo Politična stranka brez kratkega imena (0)
- Kategorija:Strani, ki uporabljajo Politična stranka z manjkajočo barvo (0)
Updating the module
[uredi kodo]The political parties contained in this module are split into alphabetised lists based on the first character of the name (for example, "Labour Party (UK)" would be under /L). The /1 subpage is for any party that does not start with the letters A to Z of the Latin alphabet (including numbers and accented characters).
Within each data submodule are two local groups: local alternate
and local full
.
Alternativna imena strank
[uredi kodo]The alternate group is for alternate names of a party. The following is an example of alternate names for the Labour Party (UK):
local alternate = {
....
["Labour and Co-operative"] = "Labour Party (UK)",
["Labour Co-operative"] = "Labour Party (UK)",
...
}
The first entry in square brackets is the alternate name, and the second entry only in quotes is the name found in the full
group, seen below. Note that the alternate name of a party should be stored in its corresponding letter-based subpage; "Alabama Democratic Party" is listed in /A even though it is an alternate name for "Democratic Party (US)" (which is stored in /D).
Table values
[uredi kodo]local full = {
....
["Labour Party (UK)"] = {abbrev = "Lab", color = "#E4003B", shortname = "Labour",},
...
}
There are three values stored for each party:
- The abbreviation (
abbrev
). - The color of the party (
color
), which can either be a hex triplet or a basic color name. - A shorter name for the party (
shortname
).
The values added to these parameters need not be unique from other parties in this module, unlike the primary name of a party.
If a name value is not stored for a party, the module will attempt to return the other "short" name variant before returning the input. Thus, if abbrev
is stored but shortname
is not, regardless of which value is asked for it will return the abbrev
value.
Requesting an addition or a change
[uredi kodo]Requests should be made at the talk page in a new section. Copy the following line and fill in only the fields relevant to the party. A party name is required as is at least one other piece of information. See above for information regarding each value.
["party"] = {abbrev = "", color = "", shortname = "",},
Napakovna sporočila
[uredi kodo]Error message | Resolution |
---|---|
Lua error: bad argument #1 to 'sub' (string expected, got table). | An entry intended for the "local full" section has been placed into the "local alternate" section. Move it to the "local full" section |
Lua error in package.lua at line 80: module 'Module:Political party/' not found. | Party added to alternate list with empty value. |
Value not in template. Please request that it be added. (article search) | The party in question has an entry with no color in the "local full" section. (This can be caused by duplicate entries in "local full" that, if present, should be merged.) |
(no error message, but party color is white/blank) | Add a color for the party to its entry in the "local full" section in the relevant Module:Political party/ lettered data page (see links below). |
parameter 1 should be a party name (article search) | A template is trying to feed a missing parameter to the module. Work around this by testing for the parameter in the template. |
parameter 2 should be the output type (article search) |
Podatkovne strani
[uredi kodo]- Political party/1
- Political party/A
- Political party/B
- Political party/C
- Political party/D
- Political party/E
- Political party/F
- Political party/G
- Political party/H
- Political party/I
- Political party/J
- Political party/K
- Political party/L
- Political party/M
- Political party/N
- Political party/O
- Political party/P
- Political party/Q
- Political party/R
- Political party/S
- Political party/T
- Political party/U
- Political party/V
- Political party/W
- Political party/X
- Political party/Y
- Political party/Z
Zgornja dokumentacija je vključena iz Modul:Political party/dok. (uredi | zgodovina) Urejevalci lahko preizkušate ta modul v peskovniku (uredi | primerjava) in testnihprimerih (uredi). Prosimo, da dodate kategorije v /dok podstran. Podstrani te predloge. |
local p = {}
local default_color = '#F8F9FA'
local categories = {
party_not_in_list = '[[Kategorija:Strani, ki uporabljajo Politična stranka z neznano stranko]]',
shortname_not_in_list = '[[Kategorija:Strani, ki uporabljajo Politična stranka brez kratkega imena]]',
color_not_in_list = '[[Kategorija:Strani, ki uporabljajo Politična stranka z manjkajočo barvo]]',
}
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 string.match(index, '%A') then
return '1'
end
return string.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 = text:match('(%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 = mw.loadData('Module:Political party/' .. index)
local data_all = data.full
local party_alt = data.alternate[party]
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
else
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 string.find(return_value, '#') then
return_value = string.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