Idi na sadržaj

Modul:Find country

S Wikipedije, slobodne enciklopedije

Dokumentaciju za ovaj modul možete napraviti na stranici Modul:Find country/dok

--[[ 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 = {
	'Južnoafričkoj Republici',
	'Južnoafričkoj republici',
	'Srednjoafričkoj Republici',
	'Srednjoafričkoj republici',
	'Centralnoafričkoj Republici',
	'Centralnoafričkoj republici',
	'Africi',
	'Antartiku',
	'Srednoj Aziji',
	'Centalnoj Aziji',
	'Južnoj Aziji',
	'Jugoistočnoj Aziji',
	'Jugozapadnoj Aziji',
	'Aziji',
	'Karibima',
	'Euroaziji',
	'Evroaziji',
	'Evropi',
	'Europi',
	'Bliskom istoku',
	'Srednjoj Americi',
	'Centralnoj Americi',
	'Sjevernoj Americi',
	'Južnoj Americi',
	'Okeaniji',
	'Amerikama',
	'Americi',
	'Afghanistanu',
	'Albaniji',
	'Alžiru',
	'Američkoj Samoi',
	'Andori',
	'Angoli',
	'Angvili',
	'Antigvi i Barbudi',
	'Argentini',
	'Armeniji',
	'Arubi',
	'Australiji',
	'Austrijskom Carstvu',
	'Austrijskom carstvu',
	'Austro-Ugarskoj',	
	'Austrougarskoj',
	'Austro-ugarskoj',
	'Austriji',
	'Azerbejdžanu',
	'Bahamima',
	'Bahreinu',
	'Bangladešu',
	'Barbadosu',
	'Bjelorusiji',
	'Belgiji',
	'Belizu',
	'Beninu',
	'Bermudi',
	'Butanu',
	'Boliviji',
	'Bosni i Hercegovini',
	'Bocvani',
	'Brazilu',
	'Bruneju',
	'Bruneiju',
	'Bugarskoj',
	'Burkini Faso',
	'Burundiju',
	'Kambodži',
	'Kamerunu',
	'Kanadi',
	'Zelenortskim Ostrvima',
	'Zelenortskim ostrvima',
	'Zelenortskim Otocima',
	'Zelenortskim otocima',
	'Zelenortskoj Republici',
	'Zelenortskoj republici',
	'Kajmanskim Ostrvima',
	'Kajmanskim ostrvima',
	'Kajmanskim Otocima',
	'Kajmanskim otocima',
	'Čadu',
	'Čileu',
	"Narodnoj Republici Kini",
	"Narodnoj republici Kini",
	'NR Kini',
	'Kini',
	'Kolumbiji',
	'Komori',
	'Kongu',
	'Republici Kongo',
	'Demokratskoj Republici Kongo',
	'Demokratskoj republici Kongo',
	'DR Kongu',
	'Cookovim Ostrvima',
	'Cookovim ostrvima',
	'Cookovim Otocima',
	'Cookovim otocima',
	'Kostarici',
	'Hrvatskoj',
	'Kubi',
	'Curaçaou',
	'Curaçau',
	'Kipru',
	'Cipru',
	'Češkoj',
	'Češkoj Republici',
	'Češkoj republici',
	'Danskoj',
	'Džibutiju',
	'Dominikanskoj Republici',
	'Dominikanskoj republici',
	'Dominici',
	'Istočnom Timoru',
	'Ekvadoru',
	'Egiptu',
	'El Salvadoru',
	'Engleskoj',
	'Eritreji',
	'Eretreji',
	'Estoniji',
	'Esvatiniju',
	'Svazilandu',
	'Etiopiji',
	'Folklandskim Ostrvima',
	'Folklandskim ostrvima',
	'Folklandskim Otocima',
	'Folklandskim otocima',
	'Farskim Ostrvima',
	'Farskim ostrvima',
	'Farskim Otocima',
	'Farskim otocima',
	'Fidžiju',
	'Finskoj',
	'Francuskoj',
	'Gabonu',
	'Gambiji',
	'Gruziji',
	'Njemačkoj',
	'Gani',
	'Gibraltaru',
	'Velikoj Britaniji',
	'Britaniji',
	'Grčkoj',
	'Grenadi',
	'Guamu',
	'Gvatemali',
	'Papua Novoj Gvineji',	
	'Ekvatorskoj Gvineji',	
	'Gvineji Bisau',
	'Gvineji-Bisau',
	'Gvineji',
	'Gvajani',
	'Haitiju',
	'Hondurasu',
	'Hong Kongu',
	'Mađarskoj',
	'Islandu',
	'Indiji',
	'Indoneziji',
	'Iranu',
	'Iraku',
	'Sjevernoj Irskoj',	
	'Irskoj',
	'Republici Irskoj',
	'Izraelu',
	'Italiji',
	'Obali Slonovače',
	'Jamajci',
	'Japanu',
	'Jordanu',
	'Kazahstanu',
	'Keniji',
	'Kiribatima',
	'Kosovu',
	'Republici Kosovu',
	'Republici Kosovo',
	'Kuvajtu',
	'Kirgistanu',
	'Laosu',
	'Latviji',
	'Libanu',
	'Lebanonu',
	'Libanonu',
	'Lesotou',
	'Liberiji',
	'Libiji',
	'Lihtenštajnu',
	'Litvaniji',
	'Luksemburgu',
	'Makau',
	'Makedoniji',
	'Republici Makedoniji',
	'Sjevernoj Makedoniji',
	'Madagaskaru',
	'Malaviju',
	'Maleziji',
	'Maldivima',
	'Maliju',
	'Malti',
	'Maršalskim Ostrvima',
	'Maršalskim ostrvima',
	'Maršalskim Otocima',
	'Maršalskim otocima',
	'Mauritaniji',
	'Mauricijusu',
	'Meksiku',
	'Mikroneziji',
	'Saveznim Državama Mikronezije',
	'SDM',
	'Moldaviji',
	'Monaku',
	'Mongoliji',
	'Crnoj Gori',
	'Montserratu',
	'Maroku',
	'Mozambiku',
	'Mjanmaru',
	'Mijanmaru',
	'Burmi',
	'Namibiji',
	'Nauru',
	'Nauruu',
	'Nepalu',
	'Nizozemskoj',
	'Holandiji',
	'Novoj Kaledoniji',
	'Novom Zelandu',
	'Nikaragvi',
	'Nigeriji',
	'Nigeru',
	'Sjevernoj Koreji',
	"Sjevernoj Korei",
	"Demokratskoj Narodnoj Republici Koreji",
	"Demokratskoj Narodnoj Republici Korei",
	'DNR Koreji',
	'DNR Korei',
	'Norveškoj',
	'Omanu',
	'Osmanskom Carstvu',
	'Osmanskom carstvu',
	'Osmanlijskom Carstvu',
	'Osmanlijskom carstvu',
	'Osmanskom Egiptu',	
	'Osmanlijskom Egiptu',	
	'Pakistanu',
	'Palau',
	'Palauu',
	'Mandatskoj Palestini',
	'Palestini',
	'Gazi',
	'Panami',
	'Paragvaju',
	'Peru',
	'Peruu',
	'Filipinima',
	'Poljskoj',
	'Portugalu',
	'Portoriku',
	'Španskim Djevičanskim Ostrvima',
	'Španskim Djevičanskim ostrvima',
	'Španskim Djevičanskim Otocima',
	'Španskim Djevičanskim otocima',
	'Kataru',
	'Rumuniji',
	'Ruskoj Imperiji',
	'Ruskom Carstvu',
	'Ruskoj Federaciji',
	'Rusiji',
	'Ruandi',
	'Svetom Kristoforu i Nevisu',
	'Svetim Kristoforu i Nevisu',
	'Svetoj Luciji',
	'Svetom Vincentu i Grenadinima',
	'Svetim Vincentu i Grenadinima',
	'Zapadnoj Samoji',
	'Zapadnoj Samoi',
	'Samoi',
	'Samoji',
	'San Marinu',
	'Svetim Tomi i Principu',
	'Svetom Tomi i Principu',
	'Saudijskoj Arabiji',
	'Škotskoj',
	'Senegalu',
	'Srbiji',
	'Sejšelima',
	'Sijeri Leoneu',
	'Sijeri Leone',
	'Singapuru',
	'Slovačkoj',
	'Sloveniji',
	'Solomonskim Ostrvima',
	'Solomonskim ostrvima',
	'Solomonskim Otocima',
	'Solomonskim otocima',
	'Somaliji',
	'Južnoj Koreji',
	'Južnoj Korei',
	'Republici Koreji',
	'Republici Korei',
	'Južnom Sudanu',
	'Sudanu',
	'Španiji',
	'Šri Lanki',
	'Surinamu',
	'Švedskoj',
	'Švicarskoj',
	'Siriji',
	'Tahitima',
	'Republici Kini',
	'Tajvanu',
	'Tadžikistanu',
	'Tanzaniji',
	'Tajlandu',
	'Togou',
	'Togu',
	'Tongi',
	'Trinidadu i Tobagou',
	'Trinidadu i Tobagu',
	'Trinidadu',
	'Tobagou',
	'Tobagu',
	'Tunisu',
	'Turskoj',
	'Turkmenistanu',
	'Turksu i Caicosu',
	'Tuvaluu',
	'Ugandi',
	'Ukrajini',
	'Ujedinjenim Arapskim Emiratima',
	'UAE-u',
	'Ujedinjenom Kraljevstvu',
	'UK-u',
	'Sjedinjenim Američkim Državama',
	'Sjedinjenim Državama',
	'SAD-u',
	'Urugvaju',
	'Uzbekistanu',
	'Vanuatuu',
	'Venecueli',
	'Vijetnamu',
	'Britanska Djevičanskim Ostrvima',
	'Britanska Djevičanskim ostrvima',
	'Britanska Djevičanskim Otocima',
	'Britanska Djevičanskim otocima',
	'Američkim Djevičanskim Ostrvima',
	'Američkim Djevičanskim ostrvima',
	'Američkim Djevičanskim Otocima',
	'Američkim Djevičanskim otocima',
	'Djevičanskim Ostrvima',
	'Djevičanskim ostrvima',
	'Djevičanskim Otocima',
	'Djevičanskim otocima',
	'Velsu',
	'Jemenu',
	'Zambiji',
	'Zimbabveu',
	'Find country/testcases'
}

-- 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