Jump to content

Module:Category main article: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Undid revision 1048354270 by Pppery (talk) Rv self, is broken, sorry
Reapply my previous edit with proper sandboxing and testcasing
Line 35: Line 35:
-- Get the pagetype.
-- Get the pagetype.
local pages = {...}
local pages = {...}
local pagetype =
local pagetype
mw.title.new(pages and pages[1] or "Wikipedia").namespace == 0 and
'article' or 'page'
if options.article ~= nil then
if options.article ~= nil then
pagetype = yesno(options.article) ~= false and 'article' or 'page'
pagetype =
elseif pages and pages[1] then
yesno(options.article) ~= false and
local page = pages[1]:gsub("|.*","")
'article' or 'page'
pagetype = mw.title.new(page).namespace == 0 and "article" or "page"
else
pagetype = "article"
end
end



Revision as of 18:26, 5 October 2021

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

local mHatnote = require('Module:Hatnote')
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:Cat main'})
	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 = mHatnote.formatPages(...)
	if not links[1] then
		local page = mw.title.getCurrentTitle().text
		links[1] = mHatnote._formatLink{link = page}
	end
	for i, link in ipairs(links) do
		links[i] = 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 pages[1] then
		local page = pages[1]: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