Difference between revisions of "Module:Redirect-distinguish"
Jump to navigation
Jump to search
test>Steel1943 |
test>Steel1943 |
||
| 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 27: | Line 28: | ||
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 34: | Line 37: | ||
) | ) | ||
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. %s not to be confused with %s.', |
redirect, | redirect, | ||
| + | pronoun, | ||
mHatlist.orList(args, true) | mHatlist.orList(args, true) | ||
) | ) | ||
Revision as of 23:14, 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)
--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] .. '[[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
--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