Module:Redirect-distinguish: Difference between revisions
Content added Content deleted
(Added pronoun detection code I originally implemented in Module:About-distinguish) |
|||
Line 12: | Line 12: | ||
function p._redirectDistinguish(args) |
function p._redirectDistinguish(args) |
||
--Check for first argument, and evaluate redirect if present |
|||
if not args[1] then |
if not args[1] then |
||
return mHatnote.makeWikitextError( |
return mHatnote.makeWikitextError( |
||
Line 28: | Line 27: | ||
args[1] = args[1] .. '[[Category:Missing redirects]]' |
args[1] = args[1] .. '[[Category:Missing redirects]]' |
||
end |
end |
||
--Check for second argument |
|||
if not args[2] then |
if not args[2] then |
||
return mHatnote.makeWikitextError( |
return mHatnote.makeWikitextError( |
||
Line 37: | Line 34: | ||
) |
) |
||
end |
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) |
args = mTableTools.compressSparseArray(args) |
||
--Assignment by removal here makes for convenient concatenation later |
--Assignment by removal here makes for convenient concatenation later |
||
local redirect = table.remove(args, 1) |
local redirect = table.remove(args, 1) |
||
local text = string.format( |
local text = string.format( |
||
'"%s" redirects here. |
'"%s" redirects here. It is not to be confused with %s.', |
||
redirect, |
redirect, |
||
pronoun, |
|||
mHatlist.orList(args, true) |
mHatlist.orList(args, true) |
||
) |
) |
Revision as of 23:13, 3 December 2016
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)
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] .. '[[Category:Articles with redirect hatnotes needing review]]'
end
elseif not string.match(args[1], 'REDIRECT%d+') and not args[1] == 'TERM' then
args[1] = args[1] .. '[[Category:Missing redirects]]'
end
if not args[2] then
return mHatnote.makeWikitextError(
'no page to be distinguished supplied',
'Template:Redirect-distinguish',
args.category
)
end
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. It is not to be confused with %s.',
redirect,
mHatlist.orList(args, true)
)
return mHatnote._hatnote(text)
end
return p