--[[ 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=" " .. str:gsub("^%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['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