Module:Country alias/sandbox explained

-- This module returns the country name or the flag name for a country,-- based on the three-letter IOC/CGA/FINA alias.

--

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 textend

local function yes(parameter) -- Return true if parameter should be interpreted as "yes". return [parameter]end

local function getAlias(args) -- Return alias parameter, possibly modified for exceptional cases. local alias = stripToNil(args.alias) local games = stripToNil(args.games) 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

'Commonwealth Games' then alias = 'ANG_CGF' end elseif alias

'ART' then if games

'Asian Indoor and Martial Arts Games' then alias = 'ART_AIMAG' end elseif alias

'GBR' then if games

'World Championships in Athletics' or games

'World Athletics Championships' or games

'European Athletics Championships' then alias = 'GBR_WCA' elseif games

'European Championships' then if year

2018 then alias = 'GBR_WCA' end end elseif alias

'HKG' then if games

'Commonwealth Games' then alias = 'HKG_CGF' end elseif alias

'IOA' then if year

2000 then alias = 'IOA_2000' end elseif alias

'MAL' or alias

'MAS' then if year and year < 1963 then alias = 'MAL' else alias = 'MAS' end elseif alias

'SWZ' then if fullName then if year and year >= 2018 and fullName ~= '2018 Commonwealth Games' then alias = 'SWZ_YO2018' end elseif year and year >= 2018 and games ~= 'Commonwealth Games' then alias = 'SWZ_YO2018' else alias = 'SWZ_YO2018' end elseif alias

'MKD' then if year and year < 2019 then alias = 'MKD' else 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

'Summer Olympics' then alias = 'ROC_2020' elseif games

'Summer Paralympics' then alias = 'RPC' end elseif year and year

2022 and games

'Winter Olympics' then alias = 'ROC_2020' end elseif alias

'ROC' then if year and year

1960 and games

'Summer Olympics' then alias = 'ROC_Formosa' elseif year and (year

1964 or year

1968) and games

'Summer Olympics' then alias = 'ROC_Taiwan' elseif year and year

2020 and games

'Summer Olympics' then alias = 'ROC_2020' elseif year and year

2022 and games

'Winter Olympics' then alias = 'ROC_2020' elseif year and year

2020 and games

'Summer Paralympics' then alias = 'RPC' else local pageName = mw.title.getCurrentTitle.text if pageName

'Russian Olympic Committee athletes at the Olympics' then alias = 'ROC_2020' end end elseif alias

'YUG' or alias

'SCG' then if year and year > 1992 and year < 2004 and games ~= 'Summer Paralympics' then alias = 'FR_YUG' end elseif alias

'ZAI' or alias

'COD' then if year and year < 1971 then alias = 'COK_COD' elseif year and year <= 1996 then alias = 'ZAI' else alias = 'COD' end elseif alias

'COK' then if year and year

1968 then alias = 'COK_COD' else alias = 'COK' end end return aliasend

local function getFlag(args, country) -- Return name of flag selected from country data (nil if none defined). local year = tonumber(args.year) local games = stripToNil(args.games) if games then local gdata = country[games] if gdata then if type(gdata)

'string' then return gdata end if gdata[year] then return gdata[year] end if type(gdata[1])

'string' then return gdata[1] end end end for _, item in ipairs(country) do if type(item)

'string' then return item end if year and year <= item[1] then return item[2] end endend

local data = mw.loadData('Module:Country alias/data')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.error or error(message) end if not country then return quit('Invalid country alias: ' .. tostring(alias)) end if yes(args.flag) then return getFlag(args, country) or quit('No flag defined for ' .. alias) else return country.name or quit('No name defined for ' .. alias) endend

local function flagIOC(frame) -- Implement which previously called this module three times. -- Returns , 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 games = stripToNil(args[2]) local athletes = stripToNil(args[3]) games = games and (games .. ' Olympics') or 'Olympics' local parms = local fullName = countryAlias(parms) parms.flag = true local dispName = fullName if fullName

'ROC' then fullName = 'Russian Olympic Committee athletes' end return ((' ') :gsub('',))end

local function flagXYZ(frame) -- Implement and its variants which previously called this module three times. -- Returns one of four possible outputs: -- from flagIOC2: , with the third value optional -- from flagIOC2team: -- from flagIOC2athlete: -- from flagIOC2medalist:
local args = frame:getParent.args local dispType = stripToNil(frame.args['type']) local code= local games= local athletes= if dispType

'athlete-O' then -- Implement . 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') games = 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') games = stripToNil(args[3]) or error('Parameter 3 should be a competition name') end local parms = local fullName = countryAlias(parms) parms.flag = true local dispName = stripToNil(args.name) if fullName

'ROC' then fullName = 'Russian Olympic Committee athletes' dispName = 'ROC' if dispType

'team' then dispType = 'name' end end if dispType

'name' then return ((' ') :gsub('',)) elseif dispType

'team' then return ((' ') :gsub('',)) elseif dispType

'athlete' then return (('  

') :gsub('',)) elseif dispType

'medalist' then return (('
 ') :gsub('',)) endendlocal function main(frame) return countryAlias(frame.args)end

return