ماڊيول:About-distinguish

local p = {}

function p.usesProperty(frame) local parent = frame.getParent(frame) local result = local ii = 1 while true do local p_num = parent.args[ii] or if p_num ~= then local label = mw.wikibase.label(p_num) or "NO LABEL"

result = result .. "

  • " .. label .. " (" .. string.upper(p_num) .. ") (see uses)
  • " ii = ii + 1 else break end end return result end return p Implements {{about-distinguish}}.


    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._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'
    	}
    	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'
    
    	--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, true)
    	)
    	return mHatnote._hatnote(text)
    end
    
    return p