Module:Redirect-distinguish

local mHatnote = require('Module:Hatnote') local mHatlist = require('Module:Hatnote list') local mArguments --initialize lazily local mTableTools = require('Module:TableTools') local p = {}

function p.redirectDistinguish (frame) mArguments = require('Module:Arguments') local args = mArguments.getArgs(frame) return p._redirectDistinguish(args) end

function p._redirectDistinguish(args) --Check for first argument, and evaluate redirect if present if not args[1] then return mHatnote.makeWikitextError(			'no redirect supplied',			'Template:Redirect-distinguish',			args.category		) end local redirectTitle = mw.title.new(args[1]) if redirectTitle and redirectTitle.exists then if not redirectTitle.isRedirect then args[1] = args[1] .. ''		end elseif not string.match(args[1], 'REDIRECT%d+') and not args[1] == 'TERM' then args[1] = args[1] .. ''	end --Check for second argument if not args[2] then return mHatnote.makeWikitextError(			'no page to be distinguished supplied',			'Template:Redirect-distinguish',			args.category		) end

--Get pronoun from Wikidata. Really basic, but it should work. local pronouns = { ['female'] = 'She is', ['transgender female'] = "She is", ['male'] = 'He is', ['transgender male'] = 'He is', ['default'] = 'They are' }	local wde = mw.wikibase.getEntity local p31 = (wde and wde:formatPropertyValues('P31').value) == 'human' local p21 = wde and wde:formatPropertyValues('P21').value local pronoun = p31 and (pronouns[p21] or pronouns['default']) or 'It is'

--Assemble hatnote and return args = mTableTools.compressSparseArray(args) --Assignment by removal here makes for convenient concatenation later local redirect = table.remove(args, 1) local text = string.format(		'"%s" redirects here. %s not to be confused with %s.',		redirect,		pronoun,		mHatlist.orList(args, true)	) return mHatnote._hatnote(text) end

return p