Permanently protected module
From Wikipedia, the free encyclopedia


-- This module implements {{cat main}}.



local mHatnote = require('Module:Hatnote')

local mFormatLink = require('Module:Format link')

local yesno = require('Module:Yesno')

local mTableTools -- lazily initialise

local mArguments -- lazily initialise



local p = {}



function p.catMain(frame)

	mTableTools = require('Module:TableTools')

	mArguments = require('Module:Arguments')

	local args = mArguments.getArgs(frame, {wrappers = 'Template:Category main article'})

	local pages = mTableTools.compressSparseArray(args)

	local options = {

		article = args.article,

		selfref = args.selfref

	}

	return p._catMain(options, unpack(pages))

end



function p._catMain(options, ...)

	options = options or {}



	-- Get the links table.

	local links = mFormatLink.formatPages({}, {...})

	if not links1 then

		local page = mw.title.getCurrentTitle().text

		links1 = mFormatLink._formatLink{link = page}

	end

	for i, link in ipairs(links) do

		linksi = string.format("'''%s'''", link)

	end



	-- Get the pagetype.

	local pages = {...}

	local pagetype 

	

	if options.article ~= nil then

		pagetype = yesno(options.article) ~= false and 'article' or 'page'

	elseif pages and pages1 then

		local page = pages1]:gsub("|.*","")

		pagetype = mw.title.new(page).namespace == 0 and "article" or "page"

	else

		pagetype = "article"

	end



	-- Work out whether we need to be singular or plural.

	local stringToFormat

	if #links > 1 then

		stringToFormat = 'The main %ss for this [[Help:Categories|category]] are %s.'

	else

		stringToFormat = 'The main %s for this [[Help:Categories|category]] is %s.'

	end



	-- Get the text.

	local text = string.format(

		stringToFormat,

		pagetype,

		mw.text.listToText(links)

	)

	

	-- Pass it through to Module:Hatnote.

	local hnOptions = {}

	hnOptions.selfref = options.selfref



	return mHatnote._hatnote(text, hnOptions)

end



return p