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)



	--Assemble everything together and return

	local text = string.format(

		'This %s is about %s. Not to be confused with %s.',

		pageType,

		about,

		mHatlist.orList(args, options.formatted)

	)

	return mHatnote._hatnote(text)

end



return p