Módulo:Political party
Este módulo está classificado como pronto para uso geral. Ele chegou a uma forma madura e pensa-se que está livre de erros e pronta para ser usado onde é apropriado. Ele está pronto para ser mencionado nas páginas de discussão e em outros recursos da Wikipédia como opção para novos usuários aprenderem. Para reduzir cargas nos servidores e mostrar texto estragado, ele deve ser melhorado pelo Exemplos para testes em vez de tentativas de edição a experimentar e erro. |
Este módulo é usado em muitas páginas e as alterações em seu conteúdo serão amplamente notadas. Por favor, teste as alterações na subpágina de testes deste módulo, na subpágina de testes de módulos ou na subpágina de testes em seu espaço usuário. Considere discutir mudanças na página de discussão antes de implementá-las. |
Este módulo depende dos seguintes outros módulos: |
Uso
{{#invoke:Political party|fetch|<partido>|<valor>}}
Parâmetros
Atualizando o módulo
Os partidos políticos contidos neste módulo são divididos em listas alfabéticas com base no primeiro caractere do nome (por exemplo, "Partido Trabalhista (Reino Unido)" estaria sob /L). A subpágina de /1 é para qualquer parte que não comece com as letras ocidentais A-Z (incluindo números e caracteres acentuados).
Dentro de cada submódulo de dados estão dois grupos locais: local alternate
e local full
.
Nomes alternativos de partidos
O grupo alternativo é para nomes alternativos de uma parte. O seguinte é um exemplo de nomes alternativos para o Partido Trabalhista (Reino Unido):
local alternate = {
....
["Labour and Co-operative"] = "Partido Trabalhista (Reino Unido)",
["Labour Co-operative"] = "Partido Trabalhista (Reino Unido)",
...
}
A primeira entrada entre colchetes é o nome alternativo, e a segunda entrada apenas entre aspas é o nome encontrado no full
group, visto abaixo. Observe que o nome alternativo de um partido deve ser armazenado em sua subpágina correspondente baseada em letras; "Partido Democrático do Alabama" está listado em /P, embora seja um nome alternativo para "Partido Democrata (Estado Unidos)" (que é armazenado em /P).
Valores da tabela
local full = {
....
["Partido Trabalhista (Reino Unido)"] = {abbrev = "Lab", color = "#E4003B", shortname = "Trabalhista",},
...
}
Existem três valore guardados para cada partido:
- A abreviação (
abbrev
). - A cor do partido (
cor
), que pode ser ou tripleto hexadecimal ou uma nome de cor básico. - Um nome curto para o partido (
shortname
).
Os valores adicionados a estes parâmetros não têm de ser exclusivos de outros partidos neste módulo, ao contrário do nome principal de um partido.
Se um valor de nome não for armazenado para um partido, o módulo tentará retornar a outra variante de nome "curto" antes de retornar a entrada. Assim ,se abbrev
estiver armazenado, maso nome abreviado
não estiver, independentemente do valor solicitado, ele retornará o valor abbrev
.
Solicitar um acréscimo ou uma alteração
Os pedidos devem ser apresentados no página de discussão numa nova secção. Copie a seguinte linha e preencha apenas os campos relevantes para o partido. É necessário um nome do partido, assim como pelo menos uma outra informação. Veja acima para obter informações sobre cada valor.
["party"] = {abbrev = "", color = "", shortname = "",},
Mensagens de erro
Mensagem de erro | Resolução |
---|---|
Lua error: bad argument #1 to 'sub' (string expected, got table). | Foi colocada uma entrada destinada à secção "local completo" na secção "local alternativo". Mova-o para a seção "Local completo" |
Lua error in package.lua at line 80: module 'Module:Political party/' not found. | Partido adicionado à Lista alternativa com valor vazio. |
Valor não está na predefinição. Por favor, solicite a sua inclusão. | A parte em questão tem uma entrada sem cor na secção "local completo". (Isso pode ser causado por entradas duplicadas em "local full" que, se presentes, devem ser mescladas.) |
(nenhuma mensagem de erro, mas a cor da festa é branca / em branco) | Adicionar uma cor para o partido à sua entrada na secção "local completo" no módulo relevante:partido político/ página de dados com letras (Ver hiperligações abaixo). |
parâmetro 1 deve ser o nome do partido | Um modelo está tentando alimentar um parâmetro ausente para o módulo. |
parâmetro 2 deve ser o resultado que se mostra |
Páginas de dados
- 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('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