X

Track changes made to this page

If you find this page useful and would like to be notified of changes made to this page, start by inputting your email below.



Privacy policy
Close this window

powered by ChangeDetection

See also

Documentation for this module may be created at Module:See also/doc

--[[
-- This module produces a "See also: a, b and c" link. It implements the
-- template {{see also}}.
--]]

local mHatnote = require('Module:Hatnote')
local mTableTools -- lazily initialise
local mArguments -- lazily initialise

local p = {}

function p.seealso(frame)
	mTableTools = require('Module:TableTools')
	mArguments = require('Module:Arguments')
	local args = mArguments.getArgs(frame, {parentOnly = true})
	local pages = {}
	for k, v in pairs(args) do
		if type(k) == 'number' then
			local numstring = tostring(k)
			local display = args['label ' .. numstring]
				or args['l' .. numstring]
			local page = {v, display}
			pages[k] = page
		end
	end
	pages = mTableTools.compressSparseArray(pages)
	if not pages[1] then
		return mHatnote.makeWikitextError(
			'no page names specified',
			'Template:See also#Errors',
			args.category
		)
	end
	local options = {
		altphrase = args.altphrase,
		selfref = args.selfref
	}
	return p._seealso(options, unpack(pages))
end

function p._seealso(options, ...)
	local altphrase = options and options.altphrase or 'See also'
	local links = mHatnote.formatPageTables(...)
	links = mw.text.listToText(links)
	local text = altphrase .. ': ' .. links

	-- Pass options through.
	local hnOptions = {}
	hnOptions.selfref = options.selfref
	hnOptions.extraclasses = 'boilerplate seealso'

	return mHatnote._hatnote(text, hnOptions)
end

return p