Модуль:CountryCases

Материал из Тептар — свободной энциклопедии
Версия от 18:04, 12 февраля 2022; Adam (обсуждение | вклад) (Новая страница: «local p = {} local brackets = "%[%[(.+)%]%]" function p._debracket(s) return mw.ustring.match(s, brackets) or s end local countries = require('Модуль:CountryCases/data') function p._genitive(frame, s) local country = p._debracket(s) if countries[country] ~= nil and countries[country].gen ~= nil then return countries[country].gen end return frame:callParserFunction('#ifexist', {country, country}) end function p._locative(frame, s) local co...»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигации Перейти к поиску

Функции[править код]

_debracket[править код]

Аналог шаблона {{без кв. скобок}}

genitive[править код]

Реализация шаблона {{страна в родительном падеже}}. Функцию _genitive можно также вызывать из других модулей.

locative[править код]

Реализация шаблона {{в стране}}. Функцию _locative можно также вызывать из других модулей. Если входящий параметр не задан в таблице данных, выбирается предлог «в» и вызывается одноимённая функция из модуля Ru.

Тесты[править код]

При изменении модуля проверяйте, что все тесты здесь выполняются.


local p = {}

local brackets = "%[%[(.+)%]%]"

function p._debracket(s)
	return mw.ustring.match(s, brackets) or s
end

local countries = require('Модуль:CountryCases/data') 

function p._genitive(frame, s)
	local country = p._debracket(s)
	if countries[country] ~= nil and countries[country].gen ~= nil then
		return countries[country].gen
	end
	return frame:callParserFunction('#ifexist', {country, country})
end

function p._locative(frame, s)
	local country = p._debracket(s)
	if countries[country] ~= nil then
		return countries[country].loc
	end
	local ru = require('Модуль:Ru')
	return 'в ' .. ru.locative(frame)
end

local function wrapper(frame, func_name)
	if not getArgs then
		getArgs = require('Module:Arguments').getArgs
	end
	local args = getArgs(frame)
	return p[func_name](frame, args[1])
end

function p.genitive(frame)
	return wrapper(frame, '_genitive')
end

function p.locative(frame)
	return wrapper(frame, '_locative')
end

return p