Module:Category pair explained

require('strict')local getArgs = require('Module:Arguments').getArgslocal hatnote = require('Module:Hatnote')._hatnotelocal formatLink = require('Module:Format link')._formatLink

local p =

local catNS = mw.site.namespaces.Category.id -- category namespace number

-- Lua implementation of -- Arguments:-- prevTitle -- mw.title.Title object for preceding category-- nextTitle -- mw.title.Title object for succeeding category-- Returns:-- hatnote that says "see also" for one or both of prev/next (depending on whether they exist)function p._pair(prevTitle, nextTitle) prevTitle = prevTitle and prevTitle.exists and formatLink nextTitle = nextTitle and nextTitle.exists and formatLink local note = if prevTitle and nextTitle then -- if both note = mw.ustring.format('See also the preceding %s and the succeeding %s',prevTitle, nextTitle) elseif prevTitle then -- if only prevTitle note = mw.ustring.format('See also the preceding %s', prevTitle) elseif nextTitle then -- if only nextTitle note = mw.ustring.format('See also the succeeding %s', nextTitle) else -- otherwise neither return mw.title.getCurrentTitle.namespace

catNS and '' or end return hatnote(note,)end

function p.catPair(frame) local args = getArgs(frame,) 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,) 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,) local nextTitle = args[1] and mw.title.new(args[1], catNS) return p._pair(nil, nextTitle)end

return p