Module: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.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)

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