پودمان:Country alias
این پودمان آمادهٔ استفادهٔ عمومی ارزیابی شدهاست. این پودمان به مرحلهای رسیدهاست که حفره و اشکال در آن وجود ندارد و امکان استفاده از آن هرکجا که لازم است وجود دارد. بهتر است از ویکیپدیا:تمرین و نمونههای آزمایشی الگو جای آزمون و خطا استفاده شود. |
این پودمان لوآ در نزدیک به ۱٬۰۰۰ صفحه بهکار رفته است و تغییر دادن آن میتواند تأثیرات گستردهای داشته باشد. لطفاً تغییرات را در زیرصفحههای /تمرین یا /آزمایشی پودمان، یا در پودمان تمرینی خودتان بیازمایید. توصیه میشود که ابتدا در خصوص تغییرات مورد نظر در صفحهٔ بحث گفتگو کرده و سپس آنها را پیادهسازی کنید. |
این پودمان، الگوی {{نام مستعار کشور}} و الگوهای خانوادهٔ {{flagIOC2}} را پیادهسازی میکند. برای مستندان کاربرد این الگوها، صفحهٔ خود الگوها را ببینید.
- پودمان:Country alias • پودمان:Country alias/تمرین • متفاوت (تفاوت)
- پودمان:Country alias/data • پودمان:Country alias/data/تمرین • متفاوت (تفاوت)
استفاده
الگو:نام مستعار کشور
الگوی {{نام مستعار کشور}} از این پودمان برای برگرداندن نام کشور یا پرچم کشور بر پایه ترکیبی از شناسهٔ سهحرفی کشور (الزامی)، سال (اختیاری) و بازیهای ورزشی مورد نظر (اختیاری) استفاده میکند.
{{#invoke:Country alias|main|alias=|flag=|games=|year=}}
الگو:FlagIOC
الگوی {{flagIOC}}، برای برگرداندن پرچم قالببندیشدهٔ کشور، نام کشور و تعداد ورزشکاران حاضر (اختیاری) در یک نسخهٔ مشخص از بازیهای المپیک، از این پودمان استفاده میکند.
{{#invoke:Country alias|flagIOC|alias=|flag=|games=|year=|athletes=}}
الگو:FlagIOC2 و اعضای خانوادهٔ آن
خانوادهٔ الگوهای {{flagIOC2}} (بهجز flagIOC که در بالا توضیح دادهشد) برای برگرداندن ترکیبهای قالببندیشدهٔ مختلف از پرچم کشور، نام کشور، تعداد ورزشکاران حاضر و/یا نام ورزشکاران حاضر در یک دوره بازیهای مشخص، از این پودمان استفاده میکند.
{{#invoke:Country alias|flagXYZ|alias=|flag=|games=|year=|athletes=|type=}}
-- 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:
ANG (workaround: added ANG_CGF for use with Commonwealth Games)
The following names have different names/flags based on sport/year
Great Britain (and N.I.) GBR, GBR_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)
Russian Athletes OAR (2018), ROC_2020 (2020 Summer, 2022 Winter)
SWZ Swaziland became Eswatini after the 2018 Commonwealth Games
MKD Macedonia became North Macedonia in 2019
ART No "Athlete" before Refugee Team @ 2017 AIMAG
The following countries have multiple aliases due to CGF/IOC/FINA/IAAF/etc differences, or deprecated uses
Anguilla AIA, ANG_CGF
Antigua and Barbuda ANT, ATG
Bahrain BHN, BHR, BRN
Curaçao CUR, CUW
East Timor TLS, TMP
Faroe Islands FAR, FRO
Guernsey GGY, GUE
Iran IRI, IRN
Ireland IRE, IRL - IRE is *only* for CGF apps
Jersey JER, JEY
Lebanon LBN, LIB
Montserrat MNT, MSR
Nicaragua NCA, NIC
Norfolk Island NFI, NFK
Oman OMA, OMN
Refugee Olympic Team ROA, ROT, EOR
Romania ROM, ROU
Saint Helena SHE, SHN
Saint Vincent and the Grenadines SVG, VIN
Sarawak SAR, SWK
Singapore SGP, SIN
South Africa RSA, SAF
Tonga TGA, TON
Trinidad and Tobago TRI, TTO
Turks and Caicos Islands TCA, TCI, TKS
Oddity that needs to be revisited
French Polynesia PYF, TAH - TAH has been converted to Tahiti per SILENCE
]]
local num_con = require('Module:Numeral converter').convert
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 = mw.ustring.match(text, '(%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 games = stripToNil(args.games)
local year = mw.getContentLanguage():parseFormattedNumber(args.year)
local fullName = stripToNil(args.fullName)
if fullName then
year = mw.getContentLanguage():parseFormattedNumber(mw.ustring.match(fullName, '%d+$')) -- ignore args.year
end
if alias == 'ANG' then
if games == 'بازیهای کشورهای همسود' then
alias = 'ANG_CGF'
end
elseif alias == 'ART' then
if games == 'بازیهای آسیایی داخل سالن و هنرهای رزمی' then
alias = 'ART_AIMAG'
end
elseif alias == 'GBR' then
if games == 'مسابقات جهانی دو و میدانی' or games == 'مسابقات قهرمانی دو و میدانی اروپا' then
alias = 'GBR_WCA'
elseif games == 'مسابقات اروپا' then
if year == 2018 then
alias = 'GBR_WCA'
end
end
elseif alias == 'HKG' then
if games == 'بازیهای کشورهای همسود' 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 == 'SWZ' then
if fullName then
if year and year >= 2018 and fullName ~= 'بازیهای کشورهای همسود ۲۰۱۸' then
alias = 'SWZ_YO2018'
end
elseif year and year >= 2018 and 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 == 'ROC' or alias == 'RUS' then
if year and year==2020 and games=='بازیهای المپیک تابستانی' then
alias = 'ROC_2020'
elseif year and year==2022 and games=='بازیهای المپیک زمستانی' then
alias = 'ROC_2020'
elseif year and year==2020 and games=='بازیهای پارالمپیک تابستانی' then
alias = 'RPC'
end
end
return alias
end
local function getFlag(args, country)
-- Return name of flag selected from country data (nil if none defined).
local year = mw.getContentLanguage():parseFormattedNumber(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
end
end
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('نام مستعار کشور نامعتبر: ' .. tostring(alias))
end
if yes(args.flag) then
return getFlag(args, country) or quit('پرچمی برای ' .. alias .. ' تعریف نشدهاست')
else
return country.name or quit('نامی برای ' .. 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 games = stripToNil(args[2])
local athletes = stripToNil(args[3])
games = games and ('بازیهای المپیک ' .. games) or 'بازیهای المپیک'
local parms = {
alias = code,
fullName = games,
year = mw.getContentLanguage():parseFormattedNumber(mw.ustring.match(games, '%d+$')),
games = mw.ustring.gsub(games, '%d+$', ''),
}
local fullName = countryAlias(parms)
parms.flag = true
return (('[[File:{flag}|22x20px|border|alt=|link=]] [[{name} در {games}|{name}]]{athletes}')
:gsub('{(%w+)}', {
athletes = athletes and
(' <span style="font-size:90%;">(' .. athletes .. ')</span>') or
'',
flag = countryAlias(parms),
games = games,
name = fullName,
}))
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']) or stripToNil(frame.args['نوع'])
local code=''
local games=''
local athletes=''
if dispType == 'name' or dispType == 'نام' or dispType == 'team' or dispType == 'تیم' then
code = stripToNil(args[1]) or error('پارامتر اول باید شامل شناسهٔ کشور باشد')
games = stripToNil(args[2]) or error('پارامتر دوم باید شامل نام یک رقابت باشد')
athletes = stripToNil(args[3])
elseif dispType == 'athlete' or dispType == 'ورزشکار' or dispType == 'medalist' or dispType == 'مدالآور' then
athletes = stripToNil(args[1]) or error('پارامتر اول باید شامل نام(های) ورزشکار(ها) باشد')
code = stripToNil(args[2]) or error('پارامتر دوم باید شامل شناسهٔ کشور باشد')
games = stripToNil(args[3]) or error('پارامتر دوم باید شامل نام یک رقابت باشد')
end
local dispName = stripToNil(args.name) or stripToNil(args['نام'])
local parms = {
alias = code,
fullName = games,
year = mw.getContentLanguage():parseFormattedNumber(mw.ustring.match(games, '%d+$')),
games = mw.ustring.gsub(games, ' ?%d+$', ''),
}
local fullName = countryAlias(parms)
parms.flag = true
if dispType == 'name' or dispType == 'نام' then
return (('[[File:{flag}|22x20px|border|alt=|link=]] [[{name} در {games}|{dispName}]]{athletes}')
:gsub('{(%w+)}', {
athletes = athletes and
(' <span style="font-size:90%;">(' .. athletes .. ')</span>') or
'',
flag = countryAlias(parms),
games = games,
name = fullName,
dispName = dispName or fullName,
}))
elseif dispType == 'team' or dispType == 'تیم' then
return (('[[File:{flag}|22x20px|border|alt=|link=]] [[{name} در {games}|{dispName}]]{alias}')
:gsub('{(%w+)}', {
alias = (' <span style="font-size:90%;">(' .. code .. ')</span>'),
flag = countryAlias(parms),
games = games,
name = fullName,
dispName = dispName or fullName,
}))
elseif dispType == 'athlete' or dispType == 'ورزشکار' then
return (('[[File:{flag}|22x20px|border|alt=|link=]] {athletes} <span style="font-size:90%;">([[{name} در {games}|{dispName}]])</span>')
:gsub('{(%w+)}', {
athletes = athletes,
flag = countryAlias(parms),
games = games,
name = fullName,
dispName = code,
}))
elseif dispType == 'medalist' or dispType == 'مدالآور' then
return (('{athletes}<br>[[File:{flag}|23x15px|border|alt=|link=]] [[{name} در {games}|{dispName}]]')
:gsub('{(%w+)}', {
athletes = athletes,
flag = countryAlias(parms),
games = games,
name = fullName,
dispName = dispName or fullName,
}))
end
end
local function main(frame)
return countryAlias(frame.args)
end
return {
flagIOC = flagIOC,
flagXYZ = flagXYZ,
main = main,
}