Jump to content

Module:Category pair

Permanently protected module
From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Hike395 (talk | contribs) at 06:21, 17 December 2021 (local module table). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

require('Module:No globals')
local getArgs = require('Module:Arguments').getArgs
local hatnoteModule = require('Module:Hatnote')
local hatnote = hatnoteModule._hatnote
local formatLink = hatnoteModule._formatLink

local p = {}

-- Lua implementation of [[Template:CategoryPair]]
-- 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 prevTitle
	nextTitle = nextTitle and nextTitle.exists and nextTitle
	if not (prevTitle or nextTitle) then
		if mw.title.getCurrentTitle().nsText == "Template" then
			return ""
		end
		return "[[Category:Pages using category pair with no output]]"
	end
	local note = "See also the"
	if prevTitle then
		note = note.." preceding "..formatLink{link=prevTitle.fullText}
	end
	if prevTitle and nextTitle then
		note = note.." and the"
	end
	if nextTitle then
		note = note.." succeeding "..formatLink{link=nextTitle.fullText}
	end
	return hatnote(note,{extraclasses="seealso"})
end

function p.catPair(frame)
	local args = getArgs(frame, {wrappers={'Template:Category pair'}})
	local prevTitle = args[1] and mw.title.makeTitle(args[1],'Category')
	local nextTitle = args[2] and mw.title.makeTitle(args[2],'Category')
	return p._pair(prevTitle, nextTitle)
end

function p.prevCat(frame)
	local args = getArgs(frame, {wrappers={'Template:Preceding category'}})
	local prevTitle = args[1] and mw.title.makeTitle(args[1],'Category')
	return p._pair(prevTitle, nil)
end

function p.nextCat(frame)
	local args = getArgs(frame, {wrappers={'Template:Succeeding category'}})
	local nextTitle = args[1] and mw.title.makeTitle(args[1],'Category')
	return p._pair(nil, nextTitle)
end

return p