Модуль:Пра
Выгляд
Гэты модуль стварае й рэалізуе шаблён {{Пра}}.
-- Апрацоўвае шаблён {{Пра}}
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