Module:About other people

From TSP Encyclopedia
Jump to navigation Jump to search

Implements {{about other people}}.


local mAbout = require('Module:About')
local mHatnote = require('Module:Hatnote')
local mArguments = require('Module:Arguments')
local p = {}

local s = { --strings
	emptySubject = 'no page subject specified',
	templateName = 'Template:About other people',
	andKeyword = 'and',
	otherPeopleNamedForm = 'other people %s %s',
	named = 'named',
	otherPeopleSame = 'other people with the same name',
}

function p.aboutOtherPeople (frame)
	local args = mArguments.getArgs(frame)
	--if not args[1], a different template would be better!
	if not args[1] then
		return mHatnote.makeWikitextError(
			s.emptySubject,
			s.templateName,
			args.category
		)
	end
	--get pages from arguments if applicable, with attempted default to args[2]
	local pages = {}
	for k, v in pairs(args) do
		if type(k) == 'number' and k > 2 then
			if pages[1] then table.insert(pages, s.andKeyword) end
			table.insert(pages, v)
		end
	end
	if #pages == 0 then pages = {args[2] and mHatnote.disambiguate(args[2])} end
	--translate args into args for _about(). [2] is nil to force otherText.
	local returnArgs = {args[1], nil, unpack(pages), text = args.text}
	local options = {
		otherText = (args[2] and
			string.format(
					s.otherPeopleNamedForm,
					args.named or s.named,
					args[2]
				)
			) or s.otherPeopleSame
	}
	return mAbout._about(returnArgs, options)
end

return p