Difference between revisions of "Module:About other people"

From blackwiki
Jump to navigation Jump to search
blackwiki>Nihiltres
(A link tweak and a string fix)
m (7 revisions imported)
 
(5 intermediate revisions by 3 users not shown)
Line 3: Line 3:
 
local mArguments = require('Module:Arguments')
 
local mArguments = require('Module:Arguments')
 
local p = {}
 
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)
 
function p.aboutOtherPeople (frame)
Line 9: Line 18:
 
if not args[1] then
 
if not args[1] then
 
return mHatnote.makeWikitextError(
 
return mHatnote.makeWikitextError(
'no page subject specified',
+
s.emptySubject,
'Template:About-otherpeople',
+
s.templateName,
 
args.category
 
args.category
 
)
 
)
Line 18: Line 27:
 
for k, v in pairs(args) do
 
for k, v in pairs(args) do
 
if type(k) == 'number' and k > 2 then
 
if type(k) == 'number' and k > 2 then
if pages[1] then table.insert(pages, 'and') end
+
if pages[1] then table.insert(pages, s.andKeyword) end
 
table.insert(pages, v)
 
table.insert(pages, v)
 
end
 
end
Line 24: Line 33:
 
if #pages == 0 then pages = {args[2] and mHatnote.disambiguate(args[2])} 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.
 
--translate args into args for _about(). [2] is nil to force otherText.
local returnArgs = {args[1], nil, unpack(pages)}
+
local returnArgs = {text = args.text, args[1], nil, unpack(pages)}
 
local options = {
 
local options = {
 
otherText = (args[2] and
 
otherText = (args[2] and
 
string.format(
 
string.format(
'other people %s %s',
+
s.otherPeopleNamedForm,
args.named or 'named',
+
args.named or s.named,
 
args[2]
 
args[2]
 
)
 
)
) or 'other people with the same name'
+
) or s.otherPeopleSame
 
}
 
}
 
return mAbout._about(returnArgs, options)
 
return mAbout._about(returnArgs, options)

Latest revision as of 12:23, 25 September 2020

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 = {text = args.text, args[1], nil, unpack(pages)}
	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