Módulo:Country alias
Este módulo não apresenta nenhuma documentação. Por favor, documente-o caso o saiba usar ou tenha conhecimentos para tal. |
-- This module returns the country name or the flag name for a country,
-- based on the three-letter IOC/CGA/FINA alias.
--[[
O seguinte código de país é usado para vários países:
ANG (solução alternativa: adicionado ANG_CGF para uso com Jogos da Commonwealth)
Os nomes a seguir têm nomes/bandeiras diferentes com base no esporte/ano
Grã-Bretanha (e N.I.) GBR, GBR_WCA (adicionado posteriormente para adicionar texto entre parênteses)
Hong Kong HKG, HKG_CGF (adicionado posteriormente para manter a bandeira colonial)
Atletas Olímpicos Individuais IOA, IOA_2000 (IOA mudou para Atletas Olímpicos Independentes em 2012)
Atletas Russos OAR (2018), ROC_2020 (Verão de 2020, Inverno de 2022)
SWZ A Suazilândia se tornou Essuatíni após os Jogos da Commonwealth de 2018
MKD A Macedônia se tornou Macedônia do Norte em 2019
ART Nenhum "Atleta" antes da Equipe de Refugiados @ 2017 AIMAG
R.D. do Congo Was Zaire (ZAI) e Congo-Kinshasa (COK_COD)
Os seguintes países têm vários aliases devido a diferenças de CGF/COI/FINA/IAAF/etc ou usos obsoletos
Anguila AIA, ANG_CGF
Antígua e Barbuda ANT, ATG
Bahrein BHN, BHR, BRN
Curaçao CUR, CUW
Timor-Leste TLS, TMP
Ilhas Malvinas FAI, FLK
Ilhas Faroé FAR, FRO
Guernsey GGY, GUE
Irã IRI, IRN
Irlanda IRE, IRL - IRE is *only* for CGF apps
Jersey JER, JEY
Líbano LBN, LIB
Montserrat MNT, MSR
Nicarágua NCA, NIC
Ilha Norfolk NFI, NFK
Omã OMA, OMN
Equipe Olímpica de Refugiados ROA, ROT, EOR
Romênia ROM, ROU
Santa Helena SHE, SHN
São Vicente e Granadinas SVG, VIN
Sarawak SAR, SWK
Singapura SGP, SIN
África do Sul RSA, SAF
Tonga TGA, TON
Trinidad e Tobago TRI, TTO
Ilhas Turcas e Caicos TCA, TCI, TKS
Estranheza que precisa ser revisitada
Polinésia Francesa PYF, TAH - TAH foi convertido para Taiti por SILÊNCIO
]]
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*$')
end
return text
end
local function yes(parameter)
-- Return true if parameter should be interpreted as "yes".
return ({ y = true, yes = true, on = true, [true] = true })[parameter]
end
local function getAlias(args)
-- Return alias parameter, possibly modified for exceptional cases.
local alias = stripToNil(args.alias)
local jogos = stripToNil(args.jogos)
local ano = tonumber(args.ano)
local nomeCompleto = stripToNil(args.nomeCompleto)
if nomeCompleto then
ano = tonumber(nomeCompleto:match('^%d+')) -- ignore args.ano
end
if alias == 'ANG' then
if jogos == 'Jogos da Commonwealth' then
alias = 'ANG_CGF'
end
elseif alias == 'ART' then
if jogos == 'Jogos Asiáticos de Artes Marciais e Recinto Coberto' then
alias = 'ART_AIMAG'
end
elseif alias == 'GBR' then
if jogos == 'Campeonato Mundial de Atletismo' or jogos == 'Campeonatos da Europa de Atletismo' then
alias = 'GBR_WCA'
elseif jogos == 'Campeonatos Europeus' then
if ano == 2018 then
alias = 'GBR_WCA'
end
end
elseif alias == 'HKG' then
if jogos == 'Jogos da Commonwealth' then
alias = 'HKG_CGF'
end
elseif alias == 'IOA' then
if ano == 2000 then
alias = 'IOA_2000'
end
elseif alias == 'MAL' or alias == 'MAS' then
if ano and ano < 1963 then
alias = 'MAL'
else
alias = 'MAS'
end
elseif alias == 'SWZ' then
if nomeCompleto then
if ano and ano >= 2018 and nomeCompleto ~= 'Jogos da Commonwealth de 2018' then
alias = 'SWZ_YO2018'
end
elseif ano and ano >= 2018 and jogos ~= 'Jogos da Commonwealth' then
alias = 'SWZ_YO2018'
else
alias = 'SWZ_YO2018'
end
elseif alias == 'MKD' then
if ano and ano < 2019 then
alias = 'MKD'
else
alias = 'MKD_2019'
end
elseif alias == 'VNM' then
if ano and ano <= 1954 then
alias = 'VIE'
end
elseif alias == 'RUS' then
if ano and ano==2020 then
if jogos=='Jogos Olímpicos de Verão' then
alias = 'ROC_2020'
elseif jogos=='Jogos Paralímpicos de Verão' then
alias = 'RPC'
end
elseif ano and ano==2022 and jogos=='Jogos Olímpicos de Inverno' then
alias = 'ROC_2020'
end
elseif alias == 'ROC' then
if ano and ano==1960 and jogos=='Jogos Olímpicos de Verão' then
alias = 'ROC_Formosa'
elseif ano and ( ano==1964 or ano==1968 ) and jogos=='Jogos Olímpicos de Verão' then
alias = 'ROC_Taiwan'
elseif ano and ano==2020 and jogos=='Jogos Olímpicos de Verão' then
alias = 'ROC_2020'
elseif ano and ano==2022 and jogos=='Jogos Olímpicos de Inverno' then
alias = 'ROC_2020'
elseif ano and ano==2020 and jogos=='Jogos Paralímpicos de Verão' then
alias = 'RPC'
else
local pageName = mw.title.getCurrentTitle().text
if pageName == 'Atletas do Comitê Olímpico Russo nos Jogos Olímpicos' then
alias = 'ROC_2020'
end
end
elseif alias == 'YUG' or alias == 'SCG' then
if ano and ano > 1992 and ano < 2004 and jogos ~= 'Jogos Paralímpicos de Verão' then
alias = 'FR_YUG'
end
elseif alias == 'ZAI' or alias == 'COD' then
if ano and ano < 1971 then
alias = 'COK_COD'
elseif ano and ano <= 1996 then
alias = 'ZAI'
else
alias = 'COD'
end
elseif alias == 'COK' then
if ano and ano == 1968 then
alias = 'COK_COD'
else
alias = 'COK'
end
end
return alias
end
local function getFlag(args, country)
-- Return name of flag selected from country data (nil if none defined).
local ano = tonumber(args.ano)
local jogos = stripToNil(args.jogos)
if jogos then
local gdata = country[jogos]
if gdata then
if type(gdata) == 'string' then
return gdata
end
if gdata[ano] then
return gdata[ano]
end
end
end
for _, item in ipairs(country) do
if type(item) == 'string' then
return item
end
if ano and ano <= item[1] then
return item[2]
end
end
end
local data = mw.loadData('Módulo:Country alias/dados')
local function countryAlias(args)
local alias = getAlias(args)
local country = data.countries[alias] or data.countries[data.countryAliases[alias]]
local function quit(message)
return args.erro or error(message)
end
if not country then
return quit('Alias de país inválido: ' .. tostring(alias))
end
if yes(args.bandeira) then
return getFlag(args, country) or quit('Nenhuma bandeira definida para ' .. alias)
else
return country.name or quit('Nenhum nome definido para ' .. alias)
end
end
local function flagIOC(frame)
-- Implement {{flagIOC}} which previously called this module three times.
-- Returns <flag> <country link> <athletes>, with the third value optional
local args = frame:getParent().args
local code = stripToNil(args[1]) or error('flagIOC parameter 1 should be a country code')
local jogos = stripToNil(args[2])
local athletes = stripToNil(args[3])
jogos = jogos and (jogos .. ' Olympics') or 'Olympics'
local parms = {
alias = code,
nomeCompleto = jogos,
ano = jogos:match('^%d+'),
jogos = jogos:gsub('^%d+ ?', ''),
}
local nomeCompleto = countryAlias(parms)
parms.flag = true
local dispName = nomeCompleto
if nomeCompleto == 'ROC' then
nomeCompleto = 'Atletas do Comitê Olímpico Russo'
end
return (('[[Ficheiro:{flag}|22x20px|border|alt=|link=]] [[{name} nos {jogos}|{dispName}]]{athletes}')
:gsub('{(%w+)}', {
athletes = athletes and
(' <span style="font-size:90%;">(' .. athletes .. ')</span>') or
'',
flag = countryAlias(parms),
jogos = jogos,
name = nomeCompleto,
dispName = dispName,
}))
end
local function flagXYZ(frame)
-- Implement {{flagIOC2}} and its variants which previously called this module three times.
-- Returns one of four possible outputs:
-- from flagIOC2: <flag> <country link> <athletes>, with the third value optional
-- from flagIOC2team: <flag> <country link> <country alias>
-- from flagIOC2athlete: <flag> <athlete(s)> <country alias/link>
-- from flagIOC2medalist: <athlete(s)><br><flag> <country link>
local args = frame:getParent().args
local dispType = stripToNil(frame.args['type'])
local code=''
local jogos=''
local athletes=''
if dispType == 'athlete-O' then
-- Implement [[Template:FlagIOCathlete]].
dispType = 'athlete'
args[3] = (args[3] or '') .. ' Olympics'
end
if dispType == 'name' or dispType == 'team' then
code = stripToNil(args[1]) or error('Parameter 1 should be a country code')
jogos = stripToNil(args[2]) or error('Parameter 2 should be a competition name')
athletes = stripToNil(args[3])
elseif dispType == 'athlete' or dispType == 'medalist' then
athletes = stripToNil(args[1]) or error('Parameter 1 should be the name(s) of the athlete(s)')
code = stripToNil(args[2]) or error('Parameter 2 should be a country code')
jogos = stripToNil(args[3]) or error('Parameter 3 should be a competition name')
end
local parms = {
alias = code,
nomeCompleto = jogos,
ano = jogos:match('^%d+'),
jogos = jogos:gsub('^%d+ ?', ''),
}
local nomeCompleto = countryAlias(parms)
parms.flag = true
local dispName = stripToNil(args.name)
if nomeCompleto == 'ROC' then
nomeCompleto = 'Atletas do Comitê Olímpico Russo'
dispName = 'ROC'
if dispType == 'team' then dispType = 'name' end
end
if dispType == 'name' then
return (('[[Ficheiro:{flag}|22x20px|border|alt=|link=]] [[{name} nos {jogos}|{dispName}]]{athletes}')
:gsub('{(%w+)}', {
athletes = athletes and
(' <span style="font-size:90%;">(' .. athletes .. ')</span>') or
'',
flag = countryAlias(parms),
jogos = jogos,
name = nomeCompleto,
dispName = dispName or nomeCompleto,
}))
elseif dispType == 'team' then
return (('[[Ficheiro:{bandeira}|22x20px|border|alt=|link=]] [[{name} nos {jogos}|{dispName}]]{alias}')
:gsub('{(%w+)}', {
alias = (' <span style="font-size:90%;">(' .. code .. ')</span>'),
flag = countryAlias(parms),
jogos = jogos,
name = nomeCompleto,
dispName = dispName or nomeCompleto,
}))
elseif dispType == 'athlete' then
return (('[[Ficheiro:{bandeira}|22x20px|border|alt=|link=]] {athletes} <span style="font-size:90%;">([[{name} nos {jogos}|{dispName}]])</span>')
:gsub('{(%w+)}', {
athletes = athletes,
flag = countryAlias(parms),
jogos = jogos,
name = nomeCompleto,
dispName = code,
}))
elseif dispType == 'medalist' then
return (('{athletes}<br>[[Ficheiro:{bandeira}|23x15px|border|alt=|link=]] [[{name} nos {jogos}|{dispName}]]')
:gsub('{(%w+)}', {
athletes = athletes,
flag = countryAlias(parms),
jogos = jogos,
name = nomeCompleto,
dispName = dispName or nomeCompleto,
}))
end
end
local function main(frame)
return countryAlias(frame.args)
end
return {
flagIOC = flagIOC,
flagXYZ = flagXYZ,
main = main,
}