Module:About-distinguish: Difference between revisions
Jump to navigation
Jump to search
(Created page with "local mHatnote = require('Module:Hatnote') local mHatlist = require('Module:Hatnote list') local mArguments --initialize lazily local mTableTools = require('Module:TableTools') local checkType = require('libraryUtil').checkType local p = {} function p.aboutDistinguish (frame) mArguments = require('Module:Arguments') local args = mArguments.getArgs(frame) return p._aboutDistinguish(args) end function p.aboutDistinguishText (frame) mArguments = require('Module:Argume...") |
No edit summary |
||
Line 59: | Line 59: | ||
--Get pronoun from Wikidata. Really basic, but it should work. | --Get pronoun from Wikidata. Really basic, but it should work. | ||
local pronouns = { | --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 wde = mw.wikibase.getEntity() | ||
local p31 = (wde and wde:formatPropertyValues('P31').value) == 'human' | --local p31 = (wde and wde:formatPropertyValues('P31').value) == 'human' | ||
local p21 = wde and wde:formatPropertyValues('P21').value | --local p21 = wde and wde:formatPropertyValues('P21').value | ||
local pronoun = p31 and (pronouns[p21] or pronouns['default']) or 'It is' | --local pronoun = p31 and (pronouns[p21] or pronouns['default']) or 'It is' | ||
local pronoun = 'It is' | |||
--Assemble everything together and return | --Assemble everything together and return |
Latest revision as of 02:30, 4 February 2024
local mHatnote = require('Module:Hatnote')
local mHatlist = require('Module:Hatnote list')
local mArguments --initialize lazily
local mTableTools = require('Module:TableTools')
local checkType = require('libraryUtil').checkType
local p = {}
function p.aboutDistinguish (frame)
mArguments = require('Module:Arguments')
local args = mArguments.getArgs(frame)
return p._aboutDistinguish(args)
end
function p.aboutDistinguishText (frame)
mArguments = require('Module:Arguments')
local args = mArguments.getArgs(frame)
return p._aboutDistinguish(args, {formatted = false})
end
function p._aboutDistinguish(args, options)
-- Type checks and defaults
checkType('_aboutDistinguish', 1, args, 'table')
if not args[1] then
return mHatnote.makeWikitextError(
'no about topic supplied',
'Template:About-distinguish',
args.category
)
end
if not args[2] then
return mHatnote.makeWikitextError(
'no page to be distinguished supplied',
'Template:About-distinguish',
args.category
)
end
checkType('_aboutDistinguish', 2, options, 'table', true)
options = options or {}
local defaultOptions = {
defaultPageType = 'page',
namespace = mw.title.getCurrentTitle().namespace,
pageTypesByNamespace = {
[0] = 'article',
[14] = 'category'
},
sectionString = 'section',
formatted = true
}
for k, v in pairs(defaultOptions) do
if options[k] == nil then options[k] = v end
end
-- Set pieces of initial "about" string
local pageType = (args.section and options.sectionString) or
options.pageTypesByNamespace[options.namespace] or
options.defaultPageType
args = mTableTools.compressSparseArray(args)
local about = table.remove(args, 1)
--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'
local pronoun = 'It is'
--Assemble everything together and return
local text = string.format(
'This %s is about %s. %s not to be confused with %s.',
pageType,
about,
pronoun,
mHatlist.orList(args, options.formatted)
)
return mHatnote._hatnote(text)
end
return p