Modul:Country alias
Dokumentationen för denna modul kan skapas på Modul:Country alias/dok
-- This module returns the land name or the flag name for a land,
-- based on the three-letter IOC/CGA/FINA alias.
-- Denna modul returnerar landsnamnet eller flaggnamnet för ett land utifrån dess
-- trebokstavskombination från IOK, CGA eller FINA.
--[[
Följande koder används för fler än ett land:
ANG (workaround: added ANG_CGF)
Följande namn/koder har olika namn/flaggor beroende på sport/år:
Great Britain (and N.I.) GBR, GBsoR_WCA (latter added to add text in parens)
Hong Kong HKG, HKG_CGF (latter added to keep colonial flag)
Individual Olympic Athletes IOA, IOA_2000 (IOA changed to Independent Olympic Athletes in 2012)
Ryska idrottare OAR (2018), ROC_2020 (sommarspelen 2020, vinterspelen 2022)
MKD Makedonien bytte namn till Nordmakedonien 2019
Följande namn förekommer två gånger på grund av skillnader mellan CGF/IOC/FINA/IAAF:
Anguilla AIA, ANG_CGF
Antigua och Barbuda ANT, ATG
Bahrain BRN, BHR, BHN
Curaçao CUR, CUW
Östtimor TLS, TMP
Falklandsöarna FAI, FLK
Färöarna FAR, FRO
Guernsey GGY, GUE
Iran IRI, IRN
Irland IRE, IRL - IRE är *enbart* för tävlingar arrangerade av CGF
Jersey JER, JEY
Libanon LBN, LIB
Montserrat MNT, MSR
Nicaragua NCA, NIC
Norfolkön NFI, NFK
Oman OMA, OMN
Refugee Olympic Team ROA, ROT, EOR
Rumänien ROM, ROU
Sankt Helena SHE, SHN
Saint Vincent och Grenadinerna SVG, VIN
Sarawak SAR, SWK
Singapore SGP, SIN
Sydafrika RSA, SAF
Tonga TGA, TON
Trinidad och Tobago TRI, TTO
Turks- och Caicosöarna TCI, TKS, TCA
Oddity that needs to be revisited
French Polynesia PYF, TAH - TAH has been converted to Tahiti per SILENCE
]]
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, ja = 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 games = stripToNil(args.spel)
local year = tonumber(args.year)
local fullName = stripToNil(args.fullName)
if fullName then
year = tonumber(fullName:match('^%d+')) -- ignore args.year
end
if alias == 'ANG' then
if games == 'samväldesspelen' then
alias = 'ANG_CGF'
end
elseif alias == 'GBR' then
if games == 'världsmästerskapen i friidrott' or games == 'europamästerskapen i friidrott' then
alias = 'GBR_WCA'
elseif games == 'europamästerskapen' then
if year == 2018 then
alias = 'GBR_WCA'
end
end
elseif alias == 'HKG' then
if games == 'samväldesspelen' then
alias = 'HKG_CGF'
end
elseif alias == 'IOA' then
if year == 2000 then
alias = 'IOA_2000'
end
elseif alias == 'MAL' then
if year and year > 1963 then
alias = 'MAS'
end
elseif alias == 'MKD' then
if year and year >= 2019 then
alias = 'MKD_2019'
end
elseif alias == 'VNM' then
if year and year <= 1954 then
alias = 'VIE'
end
elseif alias == 'RUS' then
if year and year == 2020 then
if games == 'olympiska sommarspelen' then
alias = 'ROC_2020'
elseif games == 'paralympiska sommarspelen' then
alias = 'RPC'
end
elseif year and year == 2022 and games == 'olympiska vinterspelen' then
alias = 'ROC_2020'
end
elseif alias == 'ROC' then
if year and year == 1960 and games == 'olympiska sommarspelen' then
alias = 'ROC_Formosa'
elseif year and ( year == 1964 or year == 1968 ) and games == 'olympiska sommarspelen' then
alias = 'ROC_Taiwan'
elseif year and year==2020 and games == 'olympiska sommarspelen' then
alias = 'ROC_2020'
elseif year and year==2022 and games == 'olympiska vinterspelen' then
alias = 'ROC_2020'
elseif year and year==2020 and games == 'paralympiska sommarspelen' then
alias = 'RPC'
end
end
return alias
end
local function getFlag(args, land)
-- Return name of flag selected from land data (nil if none defined).
local year = tonumber(args.year)
local games = stripToNil(args.spel)
if games then
local gdata = land[games]
if gdata then
if type(gdata) == 'string' then
return gdata
end
if gdata[year] then
return gdata[year]
end
end
end
for _, item in ipairs(land) do
if type(item) == 'string' then
return item
end
if year and year <= item[1] then
return item[2]
end
end
end
local data = mw.loadData('Modul:Country alias/data')
local function countryAlias(args)
local alias = getAlias(args)
local land = data.countries[alias] or data.countries[data.countryAliases[alias]]
local function quit(message)
return args.error or error(message)
end
if not land then
return quit('Ogiltigt landsalias: ' .. tostring(alias))
end
if yes(args.flagga) then
return getFlag(args, land) or quit('Ingen flagga definierad för ' .. alias)
else
return land.name or quit('Inget namn definierat för ' .. alias)
end
end
local function main(frame)
return countryAlias(frame.args)
end
return {
main = main,
}