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

Модуль:Суседнія катэгорыі

Зьвесткі зь Вікіпэдыі — вольнай энцыкляпэдыі
require('strict')
local getArgs = require('Модуль:Аргумэнты').getArgs
local hatnote = require('Модуль:Іншае значэньне')._hatnote
local formatLink = require('Модуль:Фармат спасылкі')._formatLink

local p = {}

local catNS = mw.site.namespaces.Category.id -- ID нумар прасторы назваў катэгорыяў

-- Вяртае спасылку віду «[[Катэгорыя:Назва|Назва]]»
local function quotedLink(title)
    if not title or not title.exists then return nil end
    -- title.fullText -> "Катэгорыя:Назва", title.text -> "Назва"
    return '«[[:' .. title.fullText .. '|' .. title.text .. ']]»'
end

-- Апрацоўвае [[Шаблён:Суседнія катэгорыі]] праз Lua
-- Аргумэнты:
--   prevTitle -- mw.title.Title для папярэдняй катэгорыі
--   nextTitle -- mw.title.Title для наступнай катэгорыі
-- Вяртае:
--   верхнюю зноску з надпісам «глядзіце таксама» для наступнай і/альбо папярэдняй катэгорыі.
function p._pair(prevTitle, nextTitle)
    local prevLink = quotedLink(prevTitle)
    local nextLink = quotedLink(nextTitle)

    local note = ''
    if prevLink and nextLink then -- калі абедзьве
        note = mw.ustring.format('Глядзіце таксама папярэднюю катэгорыю %s і наступную катэгорыю %s', prevLink, nextLink)
    elseif prevLink then -- калі толькі prevTitle
        note = mw.ustring.format('Глядзіце таксама папярэднюю катэгорыю %s', prevLink)
    elseif nextLink then -- if only nextTitle
        note = mw.ustring.format('Глядзіце таксама наступную катэгорыю %s', nextLink)
    else                  -- калі ніводнай катэгорыі
        return mw.title.getCurrentTitle().namespace == catNS and '[[Катэгорыя:Вікіпэдыя:Старонкі зь няслушна ўключанымі шаблёнамі]]' or ''
    end
    return hatnote(note, {extraclasses = 'seealso'})
end

function p.catPair(frame)
    local args = getArgs(frame, {wrappers={'Шаблён:Суседнія катэгорыі'}})
    local prevTitle = args[1] and mw.title.new(args[1],catNS)
    local nextTitle = args[2] and mw.title.new(args[2],catNS)
    return p._pair(prevTitle, nextTitle)
end

function p.prevCat(frame)
    local args = getArgs(frame, {wrappers={'Шаблён:Папярэдняя катэгорыя'}})
    local prevTitle = args[1] and mw.title.new(args[1], catNS)
    return p._pair(prevTitle, nil)
end

function p.nextCat(frame)
    local args = getArgs(frame, {wrappers={'Шаблён:Наступная катэгорыя'}})
    local nextTitle = args[1] and mw.title.new(args[1], catNS)
    return p._pair(nil, nextTitle)
end

return p