Moduli:Political party
Ky modul vlerësohet si i gatshëm për përdorim të përgjithshëm. Ai ka arritur një formë të pjekur dhe mendohet të jetë relativisht pa probleme dhe i gatshëm për përdorim kudo që është e përshtatshme. Është gati të përmendet në faqet e ndihmës dhe burime të tjera të Wikipedia-s si një mundësi për të mësuar nga përdoruesit e rinj. Për të zvogëluar ngarkesën e serverit dhe daljen e keqe, duhet të përmirësohet me testimin e sandbox sesa me redaktimin e përsëritur të provës dhe gabimit. |
Ky modul përdoret në shumë faqe dhe ndryshimet në të mund të kenë ndikim të gjerë. Provojini ndryshimet në nënfaqet e /livadhit dhe /provëzave të modulit në fjalë ose në livadhin e përgjithshëm për modulet. Konsideroni mundësinë e diskutimit të ndryshimeve në faqen e diskutimeve përpara se t'i kryeni ato. |
Ky modul varet nga modulet e mëposhtëm: |
Përdorimi
[Redakto nëpërmjet kodit]{{#invoke:Political party|fetch|<party>|<value>}}
Përditësimi i modulit
[Redakto nëpërmjet kodit]Partitë politike të përfshira në këtë modul ndahen në lista të alfabetizuara bazuar në karakterin e parë të emrit (për shembull, "Labour Party (UK)" do të ishte nën /L). Nënfaqja /1 është për çdo parti që nuk fillon me shkronjat perëndimore A-Z (përfshirë numrat dhe karakteret e theksuara).
Brenda secilit nënmodul të dhënash janë dy grupe lokale: local alternate
dhe local full
. Grupi alternativ është për emrat alternativ të një partie. Më poshtë është një shembull i emrave alternative për Labour Party (UK):
local alternate = {
....
["Labour and Co-operative"] = "Labour Party (UK)",
["Labour Co-operative"] = "Labour Party (UK)",
...
}
Hyrja e parë në kllapa katrore është emri alternativ, dhe hyrja e dytë vetëm në thonjëza është emri që gjendet në full
grupin më poshtë. Vini re se emri alternativ i një partie duhet të ruhet në nënfaqen e saj përkatëse të bazuar në shkronja; "Alabama Democratic Party" është renditur në /A edhe pse është një emër alternativ për "Democratic Party (US)" (e cila ruhet në /D).
Vlerat e tabelës
[Redakto nëpërmjet kodit]local full = {
....
["Labour Party (UK)"] = {abbrev = "Lab", color = "#E4003B", shortname = "Labour",},
...
}
Ka tre vlera të ruajtura për secilën palë:
- Shkurtesa (
abbrev
). - Ngjyra e partisë (
color
), e cila mund të jetë ose një hex triplet ose një basic color name. - Një emër më i shkurtër për partinë (
shortname
).
Nëse një vlerë emri nuk ruhet për një palë, moduli do të përpiqet të kthejë variantin tjetër të emrit "të shkurtër" përpara se të kthejë hyrjen. Kështu, nëse abbrev
ruhet por shortname
nuk është, pavarësisht se për cilën vlerë kërkohet ajo do të kthejë vlerënabbrev
.
Kërkesa për një shtesë ose një ndryshim
[Redakto nëpërmjet kodit]Kërkesat duhet të bëhen në faqen diskutimi në një seksion të ri. Kopjoni rreshtin e mëposhtëm dhe plotësoni vetëm fushat përkatëse për partinë. Kërkohet një emër partie, siç është të paktën një informacion tjetër. Shihni më lart për informacion në lidhje me secilën vlerë.
["party"] = {abbrev = "", color = "", shortname = "",},
Mesazhe gabimi
[Redakto nëpërmjet kodit]Mesazh gabimi | Zgjidhja |
---|---|
Lua error: bad argument #1 to 'sub' (vargu i pritur, mori tavolinë). | Një hyrje e destinuar për pjesën "local full" është vendosur në pjesën "local alternate". Zhvendoseni atë në pjesën "local full" |
Gabim Lua në package.lua në rreshtin 80: moduli 'Module:Political party/' nuk u gjet. | Partia u shtua në listën alternative me vlerë boshe. |
Vlera nuk është në stampë. Ju lutemi kërkoni që të shtohet. (article search) | Partia në fjalë ka një hyrje pa ngjyrë në pjesën "local full". (Kjo mund të shkaktohet nga hyrjet e kopjuara në "local full", që, nëse janë të pranishme, duhet të bashkohen.) |
Pa mesazh gabimi, por ngjyra e partisë është e bardhë/bosh | Shtoni një ngjyrë për partinë në hyrjen e saj në pjesën "local full" përkatëse Module:Political party/ të faqes së të dhënave me shkronja (shih lidhjet më poshtë). |
Parametri 1 duhet të jetë një emër partie (article search) | Një stampë po përpiqet të ushqejë një parametër që mungon në modul. Punoni rreth kësaj duke testuar për parametrin në stampë. |
Parametri 2 duhet të jetë lloji i daljes (kërkimi i artikullit) |
Faqet e të dhënave
[Redakto nëpërmjet kodit]- 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
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 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('Moduli: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('Moduli: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('Moduli: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("Moduli:Arguments").getArgs
local args = getArgs(frame)
return p._fetch(args)
end
return p