Permanently protected module
From Wikipedia, the free encyclopedia


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 args1 then

		return mHatnote.makeWikitextError(

			'no about topic supplied',

			'Template:About-distinguish',

			args.category

		)

	end

	if not args2 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 optionsk == nil then optionsk = v end

	end



	-- Set pieces of initial "about" string

	local pageType = (args.section and options.sectionString) or

		options.pageTypesByNamespaceoptions.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 (pronounsp21 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, options.formatted)

	)

	return mHatnote._hatnote(text)

end



return p
Permanently protected module
From Wikipedia, the free encyclopedia


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 args1 then

		return mHatnote.makeWikitextError(

			'no about topic supplied',

			'Template:About-distinguish',

			args.category

		)

	end

	if not args2 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 optionsk == nil then optionsk = v end

	end



	-- Set pieces of initial "about" string

	local pageType = (args.section and options.sectionString) or

		options.pageTypesByNamespaceoptions.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 (pronounsp21 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, options.formatted)

	)

	return mHatnote._hatnote(text)

end



return p

Videos

Youtube | Vimeo | Bing

Websites

Google | Yahoo | Bing

Encyclopedia

Google | Yahoo | Bing

Facebook