Перайсьці да зьместу

Модуль:Пра

Зьвесткі зь Вікіпэдыі — вольнай энцыкляпэдыі
-- Апрацоўвае шаблён {{Пра}}
local mArguments -- лянівая ініцыялізацыя
local mHatnote = require('Модуль:Іншае значэньне')
local mHatList = require('Модуль:Сьпіс верхніх зносак')
local libraryUtil = require('libraryUtil')
local checkType = libraryUtil.checkType
local p = {}
function p.about (frame)
	-- Пераход, які атрымлівае аргумэнты з фрэйма і ўсё
	mArguments = require('Модуль:Аргумэнты')
	args = mArguments.getArgs(frame)
	return p._about(args)
end
function p._about (args, options)
	-- Стварае ВЗ «Пра»
	-- Правярае тып і дапомнае значэньне
	checkType('_about', 1, args, 'table', true)
	args = args or {}
	checkType('_about', 2, options, 'table', true)
	options = options or {}
	local defaultOptions = {
		aboutForm = '',
		PageType = require('Модуль:Тып старонкі').main(),
		otherText = nil, --уключана для поўнага сьпісу
		sectionString = 'разьдзел'
	}
	for k, v in pairs(defaultOptions) do
		if options[k] == nil then options[k] = v end
	end
	-- Усталюем пачатковы радок
	local pageType = (args.section and options.sectionString) or options.PageType
	local about = ''
	
	-- граматычныя формы, артыманыя з [[Модуль:Тып старонкі]]
	local neededForms = {
		['артыкул'] = 'патрэбны',
		['старонка'] = 'патрэбная',
		['шаблён'] = 'патрэбны',
		['катэгорыя'] = 'патрэбная',
		['файл'] = 'патрэбны'
	}
	local needed = neededForms[pageType] or 'патрэбны'
	
	-- Дазволіць перадачу пэўных опцыяў
	local fsOptions = {
		otherText = options.otherText,
		extratext = args.text
	}
	local hnOptions = {
		selfref = args.selfref
	}
	if args[1] and args[2] and not args[3] then
		about = string.format('Пра %s глядзіце %s [[%s]].', args[1], pageType, args[2])
		return mHatnote._hatnote(about, hnOptions)
	end
	-- Поўны выгляд
	if args[1] and args[2] and args[3] then
		about = string.format(
			'Гэта %s пра %s. Калі вам %s %s пра %s, глядзіце %s [[%s]].',
			pageType,
			args[3],
			needed,
			pageType,
			args[1],
			pageType,
			args[2]
		)
		return mHatnote._hatnote(about, hnOptions)
	end

	-- Зварот да зыходных паводзінаў
	local forSee = mHatList._forSee(args, 2, fsOptions)
	return mHatnote._hatnote(about .. forSee, hnOptions)
end
return p