Module:Political party
- Alemannisch
- العربية
- Azərbaycanca
- Basa Bali
- বাংলা
- Беларуская
- Беларуская (тарашкевіца)
- भोजपुरी
- Bosanski
- Буряад
- Cebuano
- ChiShona
- Cymraeg
- Deutsch
- Ελληνικά
- فارسی
- Føroyskt
- Fulfulde
- Gaeilge
- ગુજરાતી
- 한국어
- Hausa
- Հայերեն
- हिन्दी
- Bahasa Indonesia
- Íslenska
- ಕನ್ನಡ
- Kurdî
- ລາວ
- Lietuvių
- मैथिली
- Македонски
- മലയാളം
- Malti
- मराठी
- მარგალური
- مازِرونی
- Bahasa Melayu
- Монгол
- မြန်မာဘာသာ
- नेपाली
- 日本語
- Norsk bokmål
- ଓଡ଼ିଆ
- ਪੰਜਾਬੀ
- ភាសាខ្មែរ
- Polski
- Português
- ᱥᱟᱱᱛᱟᱲᱤ
- سرائیکی
- Shqip
- සිංහල
- Simple English
- سنڌي
- Slovenčina
- Slovenščina
- کوردی
- தமிழ்
- တႆး
- తెలుగు
- ไทย
- Türkçe
- Українська
- اردو
- Tiếng Việt
- 中文
- ᥖᥭᥰ ᥖᥬᥲ ᥑᥨᥒᥰ
To avoid major disruption and server load, any changes should be tested in the module's /sandbox or /testcases subpages, or in your own module sandbox. The tested changes can be added to this page in a single edit. Consider discussing changes on the talk page before implementing them.
Usage
{{#invoke:Political party|fetch|<party>|<value>}}
Parameters
| Parameter | Description |
|---|---|
| 1 | The political party's name. If a party is not found, place a request at the talk page. |
| error | Optional, this parameter will return the provided |error= value if the module does not contain the requested party or color.
|
Updating the module
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.
Alternate party names
The alternate group is for alternate names of a party. The following is an example of alternate names for the Labour Party (UK):
localalternate={ .... ["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
localfull={ .... ["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 basic color name or, if the party does not have an associated color, "default". - 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
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 = "",},
Error messages
| 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) |
Data pages
- 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
Editors can experiment in this module's sandbox (edit | diff) and testcases (edit | run) pages.
Subpages of this module.
localp={} localdefault_color='#F8F9FA' localcategories={ 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]]', } localfunctioncreate_error(error_message) returnstring.format('<strong class="error">%s</strong>',error_message) end localfunctiongetFirstLetter(party) localindex=mw.ustring.sub(party,1,1) -- Set index for non-A-Z starts ifstring.match(index,'%A')then return'1' end returnstring.upper(index) end localfunctionstripToNil(text) -- If text is a string, return its trimmed content, or nil if empty. -- Otherwise return text (which may, for example, be nil). iftype(text)=='string'then text=text:match('(%S.-)%s*$') localdelink=require('Module:Delink')._delink text=delink({text,wikilinks="target"}) end returntext 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. functionp._fetch(args) ifnotargs[1]then returncreate_error("parameter 1 should be a party name.") end ifnotargs[2]then returncreate_error("parameter 2 should be the output type.") end localparty=stripToNil(args[1]) localout_type=stripToNil(args[2]) ifout_type=='colour'then out_type='color' end localindex=getFirstLetter(party) -- Load data from submodule localdata=mw.loadData('Module:Political party/'..index) localdata_all=data.full localparty_alt=data.alternate[party] localparty_info ifparty_altthen ifdata_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 ifnotparty_infothen ifout_type=='color'then returnargs.errorordefault_color else returnargs.errororparty end end localreturn_value=party_info[out_type] ifreturn_value==""then ifout_type=='color'then returnargs.errororcreate_error("Value not in template. Please request that it be added.") elseifout_type=='abbrev'then ifparty_info.shortname~=""then returnparty_info.shortname else returnparty end elseifout_type=='shortname'then ifparty_info.abbrev~=""then returnparty_info.abbrev else returnparty end else returnparty end end ifout_type=='color'then ifstring.find(return_value,'#')then return_value=string.gsub(return_value,'#','#') elseifstring.lower(return_value)=='default'then returndefault_color end end returnreturn_value end functionp.fetch(frame) -- Initialise and populate variables localgetArgs=require("Module:Arguments").getArgs localargs=getArgs(frame) returnp._fetch(args) end returnp