Jump to content

Module:Category pair/sandbox: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Updated to use Module:Format link
m Added comments to bitmap lines for clarity
Line 19: Line 19:
if prevTitle then bitmap = bitmap + 1 end
if prevTitle then bitmap = bitmap + 1 end
if nextTitle then bitmap = bitmap + 2 end
if nextTitle then bitmap = bitmap + 2 end
if bitmap == 0 then
if bitmap == 0 then --neither prev nor next
if mw.title.getCurrentTitle().nsText ~= 'Category' then
if mw.title.getCurrentTitle().nsText ~= 'Category' then
return ''
return ''
end
end
return '[[Category:Pages using category pair with no output]]'
return '[[Category:Pages using category pair with no output]]'
elseif bitmap == 1 then
elseif bitmap == 1 then --prev and not next
note = mw.ustring.format(
note = mw.ustring.format(
'See also the preceding %s', formatLink{link = prevTitle.fullText}
'See also the preceding %s', formatLink{link = prevTitle.fullText}
)
)
elseif bitmap == 2 then
elseif bitmap == 2 then --next and not prev
note = mw.ustring.format(
note = mw.ustring.format(
'See also the succeeding %s', formatLink{link = nextTitle.fullText}
'See also the succeeding %s', formatLink{link = nextTitle.fullText}
)
)
elseif bitmap == 3 then
elseif bitmap == 3 then --both prev and next
note = mw.ustring.format(
note = mw.ustring.format(
'See also the preceding %s and the succeeding %s',
'See also the preceding %s and the succeeding %s',

Revision as of 00:31, 24 December 2021

require('Module:No globals')
local getArgs = require('Module:Arguments').getArgs
local hatnote = require('Module:Hatnote')._hatnote
local formatLink = require('Module:Format link')._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
	local note = ''
	local bitmap = 0
	if prevTitle then bitmap = bitmap + 1 end
	if nextTitle then bitmap = bitmap + 2 end
	if bitmap == 0 then --neither prev nor next
		if mw.title.getCurrentTitle().nsText ~= 'Category' then
			return ''
		end
		return '[[Category:Pages using category pair with no output]]'
	elseif bitmap == 1 then --prev and not next
		note = mw.ustring.format(
			'See also the preceding %s', formatLink{link = prevTitle.fullText}
		)
	elseif bitmap == 2 then --next and not prev
		note = mw.ustring.format(
			'See also the succeeding %s', formatLink{link = nextTitle.fullText}
		)
	elseif bitmap == 3 then --both prev and next
		note = mw.ustring.format(
			'See also the preceding %s and the succeeding %s',
			formatLink{link = prevTitle.fullText},
			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.new(args[1],'Category')
	local nextTitle = args[2] and mw.title.new(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.new(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.new(args[1],'Category')
	return p._pair(nil, nextTitle)
end

return p