Перейти к содержанию

Амодуль:Find country

Аматериал Авикипедиа аҟынтә - зхы иақәиҭу аенциклопедиа

Ашаблон ахархәаразы: Find country. Уаҟа адокументациа шәахәаԥш. {{#invoke:Find country|function_name}}


--[[ 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 = {
	'Африка',
	'Алада-Африкатәи Ареспублика',
	'Африкагәҭантәи Ареспублика',	
	'Антарктика',
	'Абжьаратәи Азиа',
	'Аладатәи Азиа',
	'Алада-Мрагыларатәи Азиа',
	'Азиа',
	'Карибик',
	'Евроазиа',
	'Европа',
	'Мрагылара Ааигәа',
	'Мрагылара Ааскьа',
	'Абжьаратәи Америка',
	'Аҩада-Америка',
	'Аҩадатәи Америка',
	'Алада-Америка',
	'Аладатәи Америка',
	'Океаниа',
	'Америкақәа',
	'Афӷанисҭан',
	'Арнауҭтәыла',
	'Албаниа',
	'Алжир',
	'Америкатәи Самоа',
	'Андорра',
	'Ангола',
	'Ангилиа',
	'Антигуеи Барбудеи',
	'Аԥсны',
	'Аргентина',
	'Ермантәыла',
	'Аруба',
	'Австралиа',
	'Австриатәи аимпериа',	
	'Австриа-Венгриа',
	'Австриа',
	'Азербаиџьан',
	'Баҳаматәи Адгьылбжьахақәа',
	'Баҳамақәа',
	'Баҳреин',
	'Бангладеш',
	'Барбадос',
	'Беларус',
	'Бельгиа',
	'Белиз',
	'Бенин',
	'Бермуда',
	'Бутан',
	'Боливиа',
	'Босниеи Херцеговинеи',
	'Ботсвана',
	'Бразилиа',
	'Брунеи-Даруссалам',
	'Брунеи',
	'Болгариа',
	'Буркина-Фасо',
	'Бурунди',
	'Камбоџа',
	'Камерун',
	'Канада',
	'Кабо-Верде',
	'Каиман Адгьылбжьахақәа',
	'Чад',
	'Чили',
	"Китаитәи Жәлартә Республика",
	'КЖР',
	'Китаи',
	'Колумбиа',
	'Комор',
	'Конго Ареспублика',
	'Адемократиатә Республика Конго',
	'ДР Конго',
	'DRК',	
	'Конго',
	'Кук идгьылбжьахақәа',
	'Коста-Рика',
	'Хорватиа',
	'Куба',
	'Curaçao',
	'Curacao',
	'Кипр',
	'Чехтәи Ареспублика',
	'Чехиа',
	'Даниа',
	'Џибути',
	'Доминиканатәи Ареспублика',
	'Доминика',
	'Мрагыларатәи Тимор',
	'Еквадор',
	'Египет',
	'Мсыр',
	'Сальвадор',
	'Англиа',
	'Еритреиа',
	'Естониа',
	'Есватини',	
	'Ефиопиа',
	'Фолклендтәи адгьылбжьахақәа',
	'Фарертәи адгьылбжьахақәа',
	'Фиџьи',
	'Финландиа',
	'Франциа',
	'Габон',
	'Гамбиа',
	'Қырҭтәыла',
	'Германиа',
	'Гана',
	'Гибралтар',
	'Бырзентәыла',
	'Гренада',
	'Гуам',
	'Гватемала',
	'Папуа-Гвинеиа ҿыц',	
	'Екваториалтә Гвинеиа',	
	'Гвинеиа-Бисау',
	'Гвинеиа',
	'Гаиана',
	'Ҳаити',
	'Гондурас',
	'Гонконг',
	'Венгриа',
	'Исландиа',
	'Индиа',
	'Индонесиа',
	'Џьамтәыла',
	'Ираҟ',
	'Аҩадатәи Ирландиеи',	
	'Ирландиа',
	'Израиль',
	'Италиа',
	'Кот-д’Ивуар',
	'Иамаика',
	'Иапониа',
	'Иорданиа',
	'Ҟазахсҭан',
	'Кениа',
	'Кирибати',
	'Косово',
	'Кувеит',
	'Кырӷызсҭан',
	'Кырӷызтәи Ареспублика',
	'Лаостәи Жәлартә-Демократиатә Республика',
	'Лаос',
	'Латвиа',
	'Ливан',
	'Лесото',
	'Либериа',
	'Ливиа',
	'Лихтенштеин',
	'Литва',
	'Лиуксембург',
	'Макао',
	'Аҩадатәи Македониа Ареспублика',
	'Аҩадатәи Македониа',
	'Македониа',
	'Мадагаскар',
	'Малави',
	'Малаизиа',
	'Мальдив',
	'Мали',
	'Мальта',
	'Маршаллтәи адгьылбжьахақәа',
	'Мавританиа',
	'Маврики',
	'Мексика',
	'Микронезиа Афедеративтә Штатқәа',
	'Микронезиа',
	'Молдавиа',
	'Монако',
	'Монголиа',
	'Черногориа',
	'Монтсеррат',
	'Марокко',
	'Мозамбик',
	'Мианма',
	'Намибиа',
	'Науру',
	'Непал',
	'Недерланд',
	'Недерландқәа',
	'Каледониа ҿыц',
	'Зеландиа ҿыц',
	'Никарагуа',
	'Нигериа',
	'Нигер',
	'Аҩадатәи Кореиа',
	'Кореиатәи Жәлартә-Демократиатә Республика',
	'Норвегиа',
	'Оман',
	'Османтәи аимпериа',
	'Османтәи Мсыр',	
	'Пакисҭан',
	'Палау',
	'Ихымԥадатәиу Палестина',
	'Палестина',
	'Палестина Аҳәынҭқарра',
	'Панама',
	'Парагәаи',
	'Перу',
	'Филиппин',
	'Польша',
	'Португалиа',
	'Пуерто-Рико',
	'Испаниатәи Виргинтәи Адгьылбжьахақәа',
	'Ҟатар',
	'Румыниа',
	'Урыстәылатәи аимпериа',
	'Урыстәылатәи Афедерациа',
	'Урыстәыла',
	'Руанда',
	'Сент-Китси Невиси',
	'Сент-Лусиа',
	'Сент-Винсенти Гренадини',
	'Мраҭашәаратәи Самоа',
	'Самоа',
	'Сан-Марино',
	'Сан-Томеи Принсипии',
	'Саудтәи Арабсҭан',
	'Шотландиа',
	'Сенегал',
	'Сербиа',
	'Сеишелтәи Адгьылбжьахақәа',
	'Сиерра-Леоне',
	'Сингапур',
	'Словакиа',
	'Словениа',
	'Соломон идгьылбжьахақәа',
	'Сомалиа',
	'Аладатәи Кореиа',
	'Кореиа Ареспублика',
	'Аладатәи Судан',
	'Судан',
	'Испаниа',
	'Шри-Ланка',
	'Суринам',
	'Швециа',
	'Швеицариа',
	'Шьамтәыла',
	'Таҳити',
	'Китаитәи Ареспублика',
	'Таиван',
	'Таџьықьсҭан',
	'Танзаниа',
	'Таиланд',
	'Того',
	'Тонга',
	'Тринидади Тобагои',
	'Тринидад',
	'Тобаго',
	'Тунис',
	'Ҭырқәтәыла',
	'Ҭурқменисҭан',
	'Тувалу',
	'Уганда',
	'Украина',
	'Еиду Арабтә Емиратқәа',
	'ЕАЕ',
	'Британиаду',
	'Еиду Америкатәи Аштатқәа',
	'ЕАА',
	'ЕАШ',
	'Еиду Аштатқәа',
	'Америка',
	'Уругваи',
	'Узбеқьисҭан',
	'Вануату',
	'Ватикан',
	'Венесуела',
	'Виетнам',
	'Британиатәи Виргинтәи Адгьылбжьахақәа',
	'Америкатәи Виргинтәи Адгьылбжьахақәа',
	'Виргинтәи Адгьылбжьахақәа',
	'Уелс',
	'Иемен',
	'Замбиа',
	'Зимбабве',
	'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