Modul:Country_alias

-- This module returns the country name or the flag name for a country,-- based on the three-letter IOC/CGA/FINA alias.--[[The following country code is used for multiple countries:The following names have different names/flags based on sport/yearThe following countries have multiple aliases due to CGF/IOC/FINA/IAAF/etc differences, or deprecated usesOddity that needs to be revisited]]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 textendlocal function yes(parameter) -- Return true if parameter should be interpreted as "yes". return ({ y = true, yes = true, on = true, [true] = true })[parameter]endlocal 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 == 'Sukan Komanwel' 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 == 'Sukan Komanwel' 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 ~= 'Sukan Komanwel 2018' then alias = 'SWZ_YO2018' end elseif year and year >= 2018 and games ~= 'Sukan Komanwel' 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=='Musim Panas' then alias = 'ROC_2020' elseif games=='Sukan Paralimpik Musim Panas' then alias = 'RPC' end elseif year and year==2022 and games=='Musim Sejuk' then alias = 'ROC_2020' end elseif alias == 'ROC' then if year and year==1960 and games=='Musim Panas' then alias = 'ROC_Formosa' elseif year and ( year==1964 or year==1968 ) and games=='Musim Panas' then alias = 'ROC_Taiwan' elseif year and year==2020 and games=='Musim Panas' then alias = 'ROC_2020' elseif year and year==2022 and games=='Musim Sejuk' then alias = 'ROC_2020' elseif year and year==2020 and games=='Sukan Paralimpik Musim Panas' then alias = 'RPC' else local pageName = mw.title.getCurrentTitle().text if pageName == 'Atlet Jawatankuasa Olimpik Rusia di Sukan Olimpik' then alias = 'ROC_2020' end end elseif alias == 'YUG' or alias == 'SCG' then if year and year > 1992 and year < 2004 and games ~= 'Sukan Paralimpik Musim Panas' then alias = 'FR_YUG' end end return aliasendlocal 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 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 endendlocal 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) endendlocal function flagIOC(frame) -- Implement Ralat Lua pada baris 203: flagIOC parameter 1 should be a country code. 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 games = stripToNil(args[2]) local athletes = stripToNil(args[3]) games = games and ('Sukan Olimpik ' .. games) or 'Sukan Olimpik' local parms = { alias = code, fullName = games, year = games:match('^%d+'), games = games:gsub('? ^%d+', ), } local fullName = countryAlias(parms) parms.flag = true local dispName = fullName if fullName == 'ROC' then fullName = 'Atlet Jawatankuasa Olimpik Rusia' end return (('[[File:{flag}|22x20px|border|alt=|link=]] [[{name} di {games}|{dispName}]]{athletes}') :gsub('{(%w+)}', { athletes = athletes and (' (' .. athletes .. ')') or , flag = countryAlias(parms), games = games, name = fullName, dispName = dispName, }))endlocal function flagXYZ(frame) -- Implement Ralat Lua pada baris 249: Parameter 1 should be a country code. 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)>
<flag> <country link> local args = frame:getParent().args local dispType = stripToNil(frame.args['type']) local code= local games= local athletes= if dispType == 'athlete-O' then -- Implement Template:FlagIOCathlete. dispType = 'athlete' args[3] = (args[3] or ) .. ' Sukan Olimpik' 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 = { alias = code, fullName = games, games = games:gsub('? ^%d+', ), year = games:match('^%d+'), } local fullName = countryAlias(parms) parms.flag = true local dispName = stripToNil(args.name) if fullName == 'ROC' then fullName = 'Atlet Jawatankuasa Olimpik Rusia' dispName = 'ROC' if dispType == 'team' then dispType = 'name' end end if dispType == 'name' then return (('[[File:{flag}|22x20px|border|alt=|link=]] [[{name} di {games}|{dispName}]]{athletes}') :gsub('{(%w+)}', { athletes = athletes and (' (' .. athletes .. ')') or , flag = countryAlias(parms), games = games, name = fullName, dispName = dispName or fullName, })) elseif dispType == 'team' then return (('[[File:{flag}|22x20px|border|alt=|link=]] [[{name} di {games}|{dispName}]]{alias}') :gsub('{(%w+)}', { alias = (' (' .. code .. ')'), flag = countryAlias(parms), games = games, name = fullName, dispName = dispName or fullName, })) elseif dispType == 'athlete' then return (('[[File:{flag}|22x20px|border|alt=|link=]] {athletes} ([[{name} di {games}|{dispName}]])') :gsub('{(%w+)}', { athletes = athletes, flag = countryAlias(parms), games = games, name = fullName, dispName = code, })) elseif dispType == 'medalist' then return (('{athletes}
[[File:{flag}|23x15px|border|alt=|link=]] [[{name} di {games}|{dispName}]]') :gsub('{(%w+)}', { athletes = athletes, flag = countryAlias(parms), games = games, name = fullName, dispName = dispName or fullName, })) endendlocal function main(frame) return countryAlias(frame.args)endreturn { flagIOC = flagIOC, flagXYZ = flagXYZ, main = main,}