پودمان:Find country
ظاهر
--[[ v1.00
Test the string against the list of countries/continents.
Return the first word which matches a country/continent name ...
unless the "match=" parameter specifies a different match.
If there is no match, then return an empty string ... unless
the "nomatch" parameter specifies something different
]]
local getArgs = require('Module:Arguments').getArgs
local p = {}
-- config
local nomatch = ""
local matchnum = 1
local countryList = {
'آفریقای جنوبی',
'جمهوری آفریقای مرکزی',
'آفریقا',
'جنوبگان',
'آسیای مرکزی',
'آسیای جنوبی',
'جنوب شرق آسیا',
'آسیا',
'کارائیب',
'اوراسیا',
'اروپا',
'خاورمیانه',
'آمریکای مرکزی',
'آمریکای شمالی',
'آمریکای جنوبی',
'اقیانوسیه',
'قاره آمریکا',
'افغانستان',
'آلبانی',
'الجزایر',
'ساموآی آمریکا',
'آندورا',
'آنگولا',
'آنگویلا',
'آنتیگوآ و باربودا',
'آرژانتین',
'ارمنستان',
'آروبا',
'استرالیا',
'امپراتوری اتریش',
'اتریش-مجارستان',
'اتریش',
'جمهوری آذربایجان',
'باهاما',
'بحرین',
'بنگلادش',
'باربادوس',
'بلاروس',
'بلژیک',
'بلیز',
'بنین',
'برمودا',
'بوتان',
'بولیوی',
'بوسنی و هرزگوین',
'بوتسوانا',
'برزیل',
'برونئی',
'بلغارستان',
'بورکینافاسو',
'بوروندی',
'کامبوج',
'کامرون',
'کانادا',
'کیپ ورد',
'جزایر کیمن',
'چاد',
'شیلی',
"جمهوری خلق چین",
'چین',
'کلمبیا',
'جزایر قمر',
'جمهوری کنگو',
'جمهوری دموکراتیک کنگو',
'کنگو',
'جزایر کوک',
'کاستاریکا',
'کرواسی',
'کوبا',
'کوراسائو',
'قبرس',
'جمهوری چک',
'چک',
'دانمارک',
'جیبوتی',
'جمهوری دومینیکن',
'دومینیکا',
'تیمور شرقی',
'اکوادور',
'مصر',
'السالوادور',
'انگلستان',
'اریتره',
'استونی',
'اسواتینی',
'اتیوپی',
'جزایر فالکلند',
'جزایر فارو',
'فیجی',
'فنلاند',
'فرانسه',
'گابن',
'گامبیا',
'گرجستان',
'آلمان',
'غنا',
'جبلالطارق',
'بریتانیای کبیر',
'بریتانیا',
'یونان',
'گرنادا',
'گوآم',
'گوآتمالا',
'گواتمالا',
'پاپوآ گینه نو',
'گینه استوایی',
'گینه بیسائو',
'گینه',
'گویان',
'هائیتی',
'هندوراس',
'هنگ کنگ',
'مجارستان',
'ایسلند',
'هند',
'اندونزی',
'ایران',
'عراق',
'ایرلند شمالی',
'جمهوری ایرلند',
'ایرلند',
'اسرائیل',
'ایتالیا',
'ساحل عاج',
'جامائیکا',
'ژاپن',
'اردن',
'قزاقستان',
'کنیا',
'کیریباتی',
'کوزوو',
'جمهوری کوزوو',
'کویت',
'قرقیزستان',
'جمهوری قرقیزستان',
"جمهوری دموکراتیک خلق لائو",
'لائوس',
'لتونی',
'لبنان',
'لسوتو',
'لیبریا',
'لیبی',
'لیختناشتاین',
'لیتوانی',
'لوکزامبورگ',
'ماکائو',
'جمهوری مقدونیه',
'مقدونیه شمالی',
'مقدونیه',
'ماداگاسکار',
'مالاوی',
'مالزی',
'مالی',
'مالت',
'جزایر مارشال',
'موریتانی',
'موریس',
'مکزیک',
'ایالات فدرال میکرونزی',
'میکرونزی',
'مولداوی',
'موناکو',
'مغولستان',
'مونتهنگرو',
'مونتسرات',
'مراکش',
'موزامبیک',
'میانمار',
'نامیبیا',
'نائورو',
'نپال',
'هلند',
'کالدونیای جدید',
'نیوزیلند',
'نیکاراگوئه',
'نیجریه',
'نیجر',
'کره شمالی',
"جمهوری دموکراتیک خلق کره",
'نروژ',
'عمان',
'امپراتوری عثمانی',
'مصر عثمانی',
'پاکستان',
'پالائو',
'قیمومت بریتانیا بر فلسطین',
'فلسطین',
'سرزمینهای فلسطینی',
'پاناما',
'پاراگوئه',
'پرو',
'فیلیپین',
'لهستان',
'پرتغال',
'پورتوریکو',
'جزایر ویرجین اسپانیا',
'قطر',
'رومانی',
'امپراتوری روسیه',
'فدراسیون روسیه',
'روسیه',
'رواندا',
'سنت کیتس و نویس',
'سنت لوسیا',
'سنت وینسنت و گرنادینها',
'ساموآی غربی',
'ساموآ',
'سان مارینو',
'سائوتومه و پرنسیپ',
'عربستان سعودی',
'اسکاتلند',
'سنگال',
'صربستان',
'سیشل',
'سیرالئون',
'سنگاپور',
'اسلواکی',
'اسلوونی',
'جزایر سلیمان',
'سومالی',
'کره جنوبی',
'جمهوری کره',
'سودان جنوبی',
'سودان',
'اسپانیا',
'سریلانکا',
'سورینام',
'سوازیلند',
'سوئد',
'سوئیس',
'سوریه',
'تاهیتی',
'جمهوری چین',
'تایوان',
'تاجیکستان',
'تانزانیا',
'تایلند',
'توگو',
'تونگا',
'ترینیداد و توباگو',
'ترینیداد',
'توباگو',
'تونس',
'ترکیه',
'ترکمنستان',
'تووالو',
'اوگاندا',
'اوکراین',
'امارات متحده عربی',
'پادشاهی متحد',
'ایالات متحده آمریکا',
'ایالات متحده',
'آمریکا',
'اروگوئه',
'ازبکستان',
'وانواتو',
'ونزوئلا',
'ویتنام',
'جزایر ویرجین بریتانیا',
'جزایر ویرجین ایالات متحده آمریکا',
'جزایر ویرجین',
'ولز',
'یمن',
'زامبیا',
'زیمبابوه',
'یافتن کشور/آزمایشی'
}
-- returns the name of a country that is found in the string
-- ... or an empty string if there is no match
function findcountryinstring(str)
nMatches = 0
myMatches ={}
str=" " .. mw.ustring.gsub(str, "^%s*(.-)%s*$", "%1") .. " "
-- check agaist each country
-- if there is a match, then return that country
for i, thiscountry in ipairs(countryList) do
if mw.ustring.find(str, thiscountry) then
nMatches = nMatches + 1
myMatches[nMatches] = thiscountry
end
end
if (nMatches == 0) then
-- none of the title words matches a whole country
return nomatch
end
if ((matchnum >= 1) and (matchnum <= nMatches)) then
return myMatches[matchnum]
end
if (matchnum < 0) then
matchnum = matchnum + 1 -- so that -1 is the last match etc
if ((matchnum + nMatches) >= 1) then
return myMatches[matchnum + nMatches]
end
end
-- if we get here, we have not found a match at the position specified by "matchnum"
return nomatch
end
function p.main(frame)
local args = getArgs(frame)
return p._main(args)
end
function p._main(args)
if args['نامنطبق'] then args['nomatch'] = args['نامنطبق'] end
if args['منطبق'] then args['match'] = args['منطبق'] end
if args['رشته'] then args['string'] = args['رشته'] end
if (args['nomatch'] ~= nil) then
nomatch = args['nomatch']
end
-- by default, we return the first match
-- but the optional "C" paarmeter sets the "matchnum" variable, which
-- * for a positive matchnum "n", returns the nth match if it exists
-- * for a positive matchnum "n", returns (if it exists) the nth match
-- counting backwards from the end.
-- So "match=-1" returns the last match
-- and "match=-3" returns the 3rd-last match
if (args['match'] ~= nil) then
matchnum = tonumber(args['match'])
if ((matchnum == nil) or (matchnum == 0)) then
matchnum = 1
end
end
-- by default, we use the current page
-- but if the "string=" parameters is supplied, we use that
-- so we try the parameter first
thispagename = nil
if ((args['string'] ~= nil) and (args['string'] ~= "")) then
-- we have a non-empty "string" parameter, so we use it
thisstring = args['string']
else
-- get the page title
thispage = mw.title.getCurrentTitle()
thisstring = thispage.text;
end
-- now check the pagename to try to find a country
result = findcountryinstring(thisstring)
if (result == "") then
return nomatch
end
return result
end
return p