<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://capipedia.cap.gov/index.php?action=history&amp;feed=atom&amp;title=Module%3AWikiProject_banner%2Ftemplatepage</id>
	<title>Module:WikiProject banner/templatepage - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://capipedia.cap.gov/index.php?action=history&amp;feed=atom&amp;title=Module%3AWikiProject_banner%2Ftemplatepage"/>
	<link rel="alternate" type="text/html" href="https://capipedia.cap.gov/index.php?title=Module:WikiProject_banner/templatepage&amp;action=history"/>
	<updated>2026-04-22T10:27:55Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://capipedia.cap.gov/index.php?title=Module:WikiProject_banner/templatepage&amp;diff=1649&amp;oldid=prev</id>
		<title>NMcLarty27: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="https://capipedia.cap.gov/index.php?title=Module:WikiProject_banner/templatepage&amp;diff=1649&amp;oldid=prev"/>
		<updated>2024-01-12T15:41:31Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 11:41, 12 January 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>NMcLarty27</name></author>
	</entry>
	<entry>
		<id>https://capipedia.cap.gov/index.php?title=Module:WikiProject_banner/templatepage&amp;diff=1648&amp;oldid=prev</id>
		<title>en&gt;MSGJ: fix check for parameters in use</title>
		<link rel="alternate" type="text/html" href="https://capipedia.cap.gov/index.php?title=Module:WikiProject_banner/templatepage&amp;diff=1648&amp;oldid=prev"/>
		<updated>2024-01-02T16:22:06Z</updated>

		<summary type="html">&lt;p&gt;fix check for parameters in use&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;require(&amp;#039;strict&amp;#039;)&lt;br /&gt;
local p = {}&lt;br /&gt;
p.templatepage = function(args, raw_args, inactive)&lt;br /&gt;
local wikilink = function(link, display)&lt;br /&gt;
	if link then&lt;br /&gt;
		return display and &amp;#039;[[&amp;#039;..link..&amp;#039;|&amp;#039;..display..&amp;#039;]]&amp;#039; or &amp;#039;[[&amp;#039;..link..&amp;#039;]]&amp;#039;&lt;br /&gt;
	else&lt;br /&gt;
		return display or &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
---------------------------&lt;br /&gt;
-- Initialise variables ---&lt;br /&gt;
---------------------------&lt;br /&gt;
local sandbox-- = &amp;#039;/sandbox&amp;#039;&lt;br /&gt;
local cfg = mw.loadData(&amp;#039;Module:WikiProject banner/config&amp;#039; .. (sandbox or &amp;#039;&amp;#039;))&lt;br /&gt;
local cfg_tp = cfg.template_page -- convenient shortcut for template_page configuration settings&lt;br /&gt;
local lang = mw.language.getContentLanguage()&lt;br /&gt;
local current_page = mw.title.getCurrentTitle()&lt;br /&gt;
local on_sandbox = lang:lc(current_page.subpageText)==&amp;#039;sandbox&amp;#039; -- on sandbox subpage&lt;br /&gt;
	or current_page.namespace==2 -- in User namespace&lt;br /&gt;
	or current_page.rootText==&amp;#039;WPBannerMeta&amp;#039; -- subpage of Template:WPBannerMeta&lt;br /&gt;
local frame = mw.getCurrentFrame()&lt;br /&gt;
local parameter_format = function(parameter, value)&lt;br /&gt;
	local code = parameter and mw.html.create(&amp;#039;code&amp;#039;)&lt;br /&gt;
		:addClass(&amp;#039;tpl-para&amp;#039;)&lt;br /&gt;
		:css(&amp;#039;word-break&amp;#039;, &amp;#039;break-word&amp;#039;)&lt;br /&gt;
		:wikitext(&amp;#039;|&amp;#039; .. parameter .. &amp;#039;=&amp;#039; .. (value or &amp;#039;&amp;#039;))&lt;br /&gt;
		:done()&lt;br /&gt;
	return tostring(code)&lt;br /&gt;
end&lt;br /&gt;
local yesno = require(&amp;#039;Module:Yesno&amp;#039;)&lt;br /&gt;
local messageBox = require(&amp;#039;Module:Message box&amp;#039;).main&lt;br /&gt;
local project = args.PROJECT or &amp;#039;&amp;#039;&lt;br /&gt;
local banner_name = mw.title.new(args.BANNER_NAME or &amp;#039;Template:WikiProject &amp;#039; .. project)&lt;br /&gt;
local notices, tracking_cats = {}, {}&lt;br /&gt;
local add_tracking = function(tracking, show_on_sandbox)&lt;br /&gt;
	local category = tracking.category or cfg_tp.default_tracking -- uses [[Category:WikiProject banners with errors]] by default&lt;br /&gt;
	local key = tracking.sort_key or (project~=&amp;#039;&amp;#039; and project or &amp;#039;*&amp;#039;) -- sort key defaults to name of project&lt;br /&gt;
	if not on_sandbox or show_on_sandbox then&lt;br /&gt;
		table.insert(tracking_cats, wikilink(&amp;#039;Category:&amp;#039; .. category, key))&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
local project_link = args.PROJECT_LINK or &amp;#039;Wikipedia:WikiProject &amp;#039; .. project&lt;br /&gt;
---------------------------&lt;br /&gt;
-- Count notes/taskforces -&lt;br /&gt;
---------------------------&lt;br /&gt;
local task_forces, notes, taskforce_categories = {}, {}, {}&lt;br /&gt;
for arg_name, _ in pairs(raw_args) do&lt;br /&gt;
	local tf_match = mw.ustring.match(arg_name,&amp;#039;^tf (%d+)$&amp;#039;)&lt;br /&gt;
	if tf_match then&lt;br /&gt;
		table.insert(task_forces, tf_match)&lt;br /&gt;
	end&lt;br /&gt;
	local tf, cat = mw.ustring.match(arg_name,&amp;#039;^tf (%d+) cat (%d+)$&amp;#039;)&lt;br /&gt;
	if tf then&lt;br /&gt;
		if not taskforce_categories[tf] then-- initialise table&lt;br /&gt;
			taskforce_categories[tf] = {}&lt;br /&gt;
		end&lt;br /&gt;
		table.insert(taskforce_categories[tf], cat)&lt;br /&gt;
	end&lt;br /&gt;
	local note_match = mw.ustring.match(arg_name,&amp;#039;^note (%d+)$&amp;#039;)&lt;br /&gt;
	if note_match then&lt;br /&gt;
		table.insert(notes, note_match)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
table.sort(task_forces, function (x, y) return tonumber(x) &amp;lt; tonumber(y) end)&lt;br /&gt;
table.sort(notes, function (x, y) return tonumber(x) &amp;lt; tonumber(y) end)&lt;br /&gt;
---------------------------&lt;br /&gt;
-- Demonstrative banner ---&lt;br /&gt;
---------------------------&lt;br /&gt;
args.PROJECT = args.PROJECT or &amp;#039;&amp;#039;&lt;br /&gt;
args.class = raw_args.class and not inactive and &amp;#039;C&amp;#039;&lt;br /&gt;
args.importance = raw_args.importance and &amp;#039;High&amp;#039;&lt;br /&gt;
args.priority = raw_args.priority and &amp;#039;High&amp;#039;&lt;br /&gt;
args.auto = raw_args.auto and &amp;#039;inherit&amp;#039;&lt;br /&gt;
args.attention = raw_args.attention and &amp;#039;yes&amp;#039;&lt;br /&gt;
args.infobox = raw_args.infobox and &amp;#039;yes&amp;#039;&lt;br /&gt;
args.b1 = raw_args.b1 and &amp;#039;yes&amp;#039;&lt;br /&gt;
args.b2 = raw_args.b2 and &amp;#039;no&amp;#039;&lt;br /&gt;
args.b3 = raw_args.b3 and &amp;#039;foo&amp;#039;&lt;br /&gt;
args.b4 = raw_args.b4 and &amp;#039;yes&amp;#039;&lt;br /&gt;
args.b5 = raw_args.b5 and &amp;#039;na&amp;#039;&lt;br /&gt;
args.b6 = raw_args.b6&lt;br /&gt;
args[&amp;#039;image-needed&amp;#039;] = raw_args[&amp;#039;image-needed&amp;#039;] and &amp;#039;yes&amp;#039;&lt;br /&gt;
args[&amp;#039;collaboration-candidate&amp;#039;] = raw_args[&amp;#039;collaboration-candidate&amp;#039;] and &amp;#039;yes&amp;#039;&lt;br /&gt;
args[&amp;#039;collaboration-current&amp;#039;] = raw_args[&amp;#039;collaboration-current&amp;#039;] and &amp;#039;yes&amp;#039;&lt;br /&gt;
args[&amp;#039;collaboration-past&amp;#039;] = raw_args[&amp;#039;collaboration-past&amp;#039;] and &amp;#039;yes&amp;#039;&lt;br /&gt;
args[&amp;#039;a class&amp;#039;] = raw_args[&amp;#039;a class&amp;#039;] and &amp;#039;current&amp;#039;&lt;br /&gt;
args[&amp;#039;peer review&amp;#039;] = raw_args[&amp;#039;peer review&amp;#039;] and &amp;#039;yes&amp;#039;&lt;br /&gt;
args[&amp;#039;old peer review&amp;#039;] = raw_args[&amp;#039;old peer review&amp;#039;] and &amp;#039;yes&amp;#039;&lt;br /&gt;
for _, tf in ipairs(task_forces) do&lt;br /&gt;
	args[&amp;#039;tf &amp;#039;..tf] = &amp;#039;yes&amp;#039;&lt;br /&gt;
	if raw_args[&amp;#039;tf &amp;#039;..tf..&amp;#039; importance&amp;#039;] then&lt;br /&gt;
		args[&amp;#039;tf &amp;#039;..tf..&amp;#039; importance&amp;#039;] = &amp;#039;Top&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
for _, note in ipairs(notes) do&lt;br /&gt;
	local text_arg = args[&amp;#039;NOTE_&amp;#039;..note..&amp;#039;_TEXT&amp;#039;]&lt;br /&gt;
	if text_arg and text_arg~=&amp;#039;&amp;#039; then&lt;br /&gt;
		args[&amp;#039;note &amp;#039;..note] = &amp;#039;yes&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
local demo_banner, note_count, tf_count, assessment_link = require(&amp;#039;Module:WikiProject banner&amp;#039;  .. (sandbox or &amp;#039;&amp;#039;))._main(args, args, true, banner_name)&lt;br /&gt;
if not assessment_link then --temporary code until main module updated&lt;br /&gt;
	assessment_link = args.ASSESSMENT_LINK&lt;br /&gt;
end&lt;br /&gt;
if not assessment_link then&lt;br /&gt;
	local project_name = args.PROJECT_NAME or &amp;#039;WikiProject &amp;#039; .. project&lt;br /&gt;
	local project_link = mw.title.new(args.PROJECT_LINK or &amp;#039;Wikipedia:&amp;#039; .. project_name)&lt;br /&gt;
	local fallback = mw.title.new(project_link.prefixedText .. &amp;#039;/Assessment&amp;#039;)&lt;br /&gt;
	assessment_link = fallback.exists and fallback.prefixedText&lt;br /&gt;
elseif assessment_link==&amp;#039;no&amp;#039; then&lt;br /&gt;
	assessment_link = nil&lt;br /&gt;
end&lt;br /&gt;
---------------------------&lt;br /&gt;
-- Project status ---------&lt;br /&gt;
---------------------------&lt;br /&gt;
local status = args.PROJECT_STATUS and cfg.status[args.PROJECT_STATUS]&lt;br /&gt;
if inactive then&lt;br /&gt;
	table.insert(notices, cfg_tp.inactive:format(status or &amp;#039;inactive&amp;#039;))&lt;br /&gt;
elseif status then&lt;br /&gt;
	table.insert(notices, &amp;#039;The status of this project has been identified as &amp;#039; .. status .. &amp;#039;.&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
---------------------------&lt;br /&gt;
-- Quality criteria -------&lt;br /&gt;
---------------------------&lt;br /&gt;
local custom_mask = banner_name:subPageTitle(&amp;#039;class&amp;#039;)&lt;br /&gt;
if args.QUALITY_CRITERIA==&amp;#039;custom&amp;#039; then&lt;br /&gt;
	add_tracking(cfg_tp.quality_criteria.custom_tracking)&lt;br /&gt;
	if custom_mask.exists and #custom_mask:getContent()&amp;gt;1 then&lt;br /&gt;
		table.insert(notices, cfg_tp.quality_criteria.custom:format(&lt;br /&gt;
			custom_mask.prefixedText&lt;br /&gt;
		))&lt;br /&gt;
	else&lt;br /&gt;
		table.insert(notices, string.format(&lt;br /&gt;
			cfg_tp.quality_criteria.missing,&lt;br /&gt;
			parameter_format(&amp;#039;QUALITY_CRITERIA&amp;#039;),&lt;br /&gt;
			custom_mask.prefixedText&lt;br /&gt;
		))&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
---------------------------&lt;br /&gt;
-- Custom importance mask -&lt;br /&gt;
---------------------------&lt;br /&gt;
local custom_mask = banner_name:subPageTitle(&amp;#039;importance&amp;#039;)&lt;br /&gt;
if args.IMPORTANCE_SCALE==&amp;#039;subpage&amp;#039; then&lt;br /&gt;
	if custom_mask.exists and #custom_mask:getContent()&amp;gt;1 then&lt;br /&gt;
		table.insert(notices, string.format(&lt;br /&gt;
			cfg_tp.custom_importance_mask.in_use,&lt;br /&gt;
			custom_mask.prefixedText&lt;br /&gt;
		))&lt;br /&gt;
	else&lt;br /&gt;
		table.insert(notices, string.format(&lt;br /&gt;
			cfg_tp.custom_importance_mask.missing,&lt;br /&gt;
			parameter_format(&amp;#039;IMPORTANCE_SCALE&amp;#039;),&lt;br /&gt;
			custom_mask.prefixedText&lt;br /&gt;
		))&lt;br /&gt;
	end&lt;br /&gt;
elseif custom_mask.exists and #custom_mask:getContent()&amp;gt;1 then&lt;br /&gt;
	table.insert(notices, string.format(&lt;br /&gt;
		cfg_tp.custom_importance_mask.unused,&lt;br /&gt;
		custom_mask.prefixedText,&lt;br /&gt;
		parameter_format(&amp;#039;IMPORTANCE_SCALE&amp;#039;,&amp;#039;subpage&amp;#039;)&lt;br /&gt;
	))&lt;br /&gt;
end&lt;br /&gt;
---------------------------&lt;br /&gt;
-- Collapsed sections -----&lt;br /&gt;
---------------------------&lt;br /&gt;
local more_than = function(n)&lt;br /&gt;
	return n&amp;gt;=2 and string.format(cfg_tp.more_than.more, tostring(n))&lt;br /&gt;
		or n==1 and cfg_tp.more_than.one&lt;br /&gt;
		or n==0 and cfg_tp.more_than.zero&lt;br /&gt;
end&lt;br /&gt;
local tf_threshold = tonumber(args.TF_COLLAPSE) or (args.TF_HEADER and cfg.task_force.lower_threshold) or cfg.task_force.upper_threshold&lt;br /&gt;
if tf_count &amp;gt; tf_threshold then&lt;br /&gt;
	table.insert(notices, string.format(&lt;br /&gt;
		cfg_tp.task_force.collapsing,&lt;br /&gt;
		tf_count,&lt;br /&gt;
		more_than(tf_threshold),&lt;br /&gt;
		parameter_format(&amp;#039;TF_COLLAPSE&amp;#039;)&lt;br /&gt;
	))&lt;br /&gt;
end&lt;br /&gt;
local note_threshold = tonumber(args.COLLAPSED) or 2&lt;br /&gt;
local hook_collapsed&lt;br /&gt;
if args.HOOK_COLLAPSED then&lt;br /&gt;
	local success, result = pcall(mw.ext.ParserFunctions.expr, args.HOOK_COLLAPSED)&lt;br /&gt;
	hook_collapsed = success and tonumber(result) or nil&lt;br /&gt;
	if args.HOOK_COLLAPSED==&amp;#039;auto&amp;#039; then&lt;br /&gt;
		hook_collapsed = args.HOOK_NOTE and 1 or 0 -- default assumption is that HOOK_NOTE produces max one note&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
if note_count &amp;gt; note_threshold then&lt;br /&gt;
	table.insert(notices, string.format(&lt;br /&gt;
		cfg_tp.note.collapsing,&lt;br /&gt;
		note_count,&lt;br /&gt;
		more_than(note_threshold),&lt;br /&gt;
		parameter_format(&amp;#039;COLLAPSED&amp;#039;)&lt;br /&gt;
	))&lt;br /&gt;
end&lt;br /&gt;
if args.HOOK_NOTE then&lt;br /&gt;
	if not hook_collapsed then&lt;br /&gt;
		table.insert(notices, string.format(&lt;br /&gt;
			cfg_tp.note.counter,&lt;br /&gt;
			parameter_format(&amp;#039;HOOK_NOTE&amp;#039;),&lt;br /&gt;
			parameter_format(&amp;#039;HOOK_COLLAPSED&amp;#039;)&lt;br /&gt;
		))&lt;br /&gt;
		add_tracking(cfg_tp.note.tracking)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
---------------------------&lt;br /&gt;
-- Assessment link --------&lt;br /&gt;
---------------------------&lt;br /&gt;
if raw_args.class or raw_args.importance then&lt;br /&gt;
	local url = mw.uri.fullUrl(banner_name.prefixedText,{&lt;br /&gt;
		action = &amp;#039;edit&amp;#039;,&lt;br /&gt;
		summary = cfg_tp.assessment_link.edit_summary&lt;br /&gt;
	})&lt;br /&gt;
	if args.ASSESSMENT_LINK then&lt;br /&gt;
		if not mw.title.new(args.ASSESSMENT_LINK).exists then&lt;br /&gt;
			table.insert(notices, string.format(&lt;br /&gt;
				cfg_tp.assessment_link.missing,&lt;br /&gt;
				wikilink(args.ASSESSMENT_LINK),&lt;br /&gt;
				tostring(url),&lt;br /&gt;
				parameter_format(&amp;#039;ASSESSMENT_LINK&amp;#039;)&lt;br /&gt;
			))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
---------------------------&lt;br /&gt;
-- Project parameter ------&lt;br /&gt;
---------------------------&lt;br /&gt;
if args.PROJECT==&amp;#039;&amp;#039; then&lt;br /&gt;
	table.insert(notices, cfg_tp.project.text)&lt;br /&gt;
	add_tracking(cfg_tp.project.tracking)&lt;br /&gt;
end&lt;br /&gt;
---------------------------&lt;br /&gt;
-- Subst check ------------&lt;br /&gt;
---------------------------&lt;br /&gt;
if not raw_args.substcheck then&lt;br /&gt;
	table.insert(notices, string.format(&lt;br /&gt;
		cfg_tp.substcheck.text,&lt;br /&gt;
		parameter_format(&amp;#039;substcheck&amp;#039;)&lt;br /&gt;
	))&lt;br /&gt;
	add_tracking(cfg_tp.substcheck.tracking)&lt;br /&gt;
end&lt;br /&gt;
---------------------------&lt;br /&gt;
-- Portal link ------------&lt;br /&gt;
---------------------------&lt;br /&gt;
if args.PORTAL then&lt;br /&gt;
	local portal_image = require(&amp;#039;Module:Portal&amp;#039;)._image(args.PORTAL)&lt;br /&gt;
	local portal_link = mw.title.new(&amp;#039;Portal:&amp;#039; .. args.PORTAL)&lt;br /&gt;
	local explain&lt;br /&gt;
	if portal_link and portal_link.exists then&lt;br /&gt;
		if portal_image==&amp;#039;Portal-puzzle.svg&amp;#039; then&lt;br /&gt;
			explain = string.format(cfg_tp.portal.no_image, cfg_tp.portal.instructions)&lt;br /&gt;
		else&lt;br /&gt;
			explain = string.format(&lt;br /&gt;
				cfg_tp.portal.image_link,&lt;br /&gt;
				wikilink(&amp;#039;:File:&amp;#039; .. portal_image),&lt;br /&gt;
				cfg_tp.portal.instructions&lt;br /&gt;
			)&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		explain = string.format(cfg_tp.portal.missing, parameter_format(&amp;#039;PORTAL&amp;#039;))&lt;br /&gt;
		add_tracking(cfg_tp.portal.tracking)&lt;br /&gt;
	end&lt;br /&gt;
	local text = string.format(&lt;br /&gt;
		cfg_tp.portal.text,&lt;br /&gt;
		portal_link.prefixedText,&lt;br /&gt;
		explain&lt;br /&gt;
	)&lt;br /&gt;
	table.insert(notices, text)&lt;br /&gt;
end&lt;br /&gt;
---------------------------&lt;br /&gt;
-- Task forces ------------&lt;br /&gt;
---------------------------&lt;br /&gt;
for _, k in ipairs(task_forces) do&lt;br /&gt;
	local name_parameter = &amp;#039;TF_&amp;#039;..k..&amp;#039;_NAME&amp;#039;&lt;br /&gt;
	if raw_args[&amp;#039;tf &amp;#039;..k] and not args[&amp;#039;TF_&amp;#039;..k..&amp;#039;_NAME&amp;#039;] then&lt;br /&gt;
		table.insert(notices, string.format(&lt;br /&gt;
			cfg_tp.task_force.text,&lt;br /&gt;
			parameter_format(&amp;#039;TF_&amp;#039;..k..&amp;#039;_NAME&amp;#039;)&lt;br /&gt;
		))&lt;br /&gt;
		add_tracking(cfg_tp.task_force.tracking)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
---------------------------&lt;br /&gt;
-- Parameter checking -----&lt;br /&gt;
---------------------------&lt;br /&gt;
if not inactive then&lt;br /&gt;
	local category = mw.title.new(cfg.unknown_parameters.tracking:format(&lt;br /&gt;
		args.PROJECT_NAME or &amp;#039;WikiProject &amp;#039; .. project&lt;br /&gt;
	))&lt;br /&gt;
	local text = string.format(&lt;br /&gt;
		category.exists and cfg_tp.parameters.tracking or cfg_tp.parameters.create,&lt;br /&gt;
		&amp;#039;:&amp;#039; .. category.fullText&lt;br /&gt;
	)&lt;br /&gt;
	table.insert(notices, text)&lt;br /&gt;
end&lt;br /&gt;
---------------------------&lt;br /&gt;
-- Assessment categories --&lt;br /&gt;
---------------------------&lt;br /&gt;
local importance_name = args.IMPN or (raw_args.priority and &amp;#039;priority&amp;#039; or cfg.importance.default_name)&lt;br /&gt;
local check_assessment_categories = function(project, assessment_cat, quality, importance_scale, prefix, tf_name)&lt;br /&gt;
	assessment_cat = assessment_cat or ((project or &amp;#039;&amp;#039;) .. &amp;#039; articles&amp;#039;)&lt;br /&gt;
	local missing_cats = {}&lt;br /&gt;
	local red_cats_in_use = false&lt;br /&gt;
	local check_cat = function(cat_name, preload)&lt;br /&gt;
		local category = mw.title.new(&amp;#039;Category:&amp;#039; .. cat_name)&lt;br /&gt;
		if not category.exists then&lt;br /&gt;
			local url = mw.uri.fullUrl(&amp;#039;Category:&amp;#039; .. cat_name, {&lt;br /&gt;
				action = &amp;#039;edit&amp;#039;,&lt;br /&gt;
				preload = preload,&lt;br /&gt;
				editintro = cfg_tp.check_assessment.editintro,&lt;br /&gt;
				preview = &amp;#039;no&amp;#039;,&lt;br /&gt;
				summary = cfg_tp.check_assessment.create_summary,&lt;br /&gt;
				[&amp;#039;preloadparams[1]&amp;#039;] = project,&lt;br /&gt;
				[&amp;#039;preloadparams[2]&amp;#039;] = mw.ustring.gsub(assessment_cat, &amp;#039; articles&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
			})&lt;br /&gt;
			local pages_in_category = mw.site.stats.pagesInCategory(cat_name, &amp;#039;pages&amp;#039;)&lt;br /&gt;
			if pages_in_category&amp;gt;0 then&lt;br /&gt;
				red_cats_in_use = true&lt;br /&gt;
			end&lt;br /&gt;
			local label = pages_in_category&amp;gt;0 and &amp;#039;&amp;lt;b&amp;gt;create&amp;lt;/b&amp;gt;&amp;#039; or &amp;#039;create&amp;#039;&lt;br /&gt;
			local create_link = wikilink(&amp;#039;:&amp;#039; .. category.prefixedText) .. &amp;#039; &amp;amp;ndash; ([&amp;#039; .. tostring(url) .. &amp;#039; &amp;#039; .. label .. &amp;#039;])&amp;#039;&lt;br /&gt;
			table.insert(missing_cats, create_link)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if quality then&lt;br /&gt;
		check_cat(lang:ucfirst(assessment_cat) .. &amp;#039; by quality&amp;#039;, cfg_tp.check_assessment.meta_preload)&lt;br /&gt;
		for _, class in ipairs(cfg_tp.check_assessment.classes) do&lt;br /&gt;
			local cat_name = (class==&amp;#039;Unassessed&amp;#039; and &amp;#039;Unassessed&amp;#039; or class..&amp;#039;-Class&amp;#039;) .. &amp;#039; &amp;#039; .. assessment_cat&lt;br /&gt;
			check_cat(cat_name, cfg_tp.check_assessment.quality_preload)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if importance_scale and importance_scale~=&amp;#039;inline&amp;#039; and importance_scale~=&amp;#039;subpage&amp;#039; then&lt;br /&gt;
		check_cat(lang:ucfirst(assessment_cat) .. &amp;#039; by &amp;#039; .. importance_name, cfg_tp.check_assessment.meta_preload)&lt;br /&gt;
		for _, importance in ipairs(cfg_tp.check_assessment.importances) do&lt;br /&gt;
			local cat_name = importance .. &amp;#039;-&amp;#039; .. importance_name .. &amp;#039; &amp;#039; .. assessment_cat&lt;br /&gt;
			check_cat(cat_name, cfg_tp.check_assessment.importance_preload)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if #missing_cats&amp;gt;0 then&lt;br /&gt;
		local intro = string.format(&lt;br /&gt;
			cfg_tp.check_assessment.text,&lt;br /&gt;
			tf_name or project or &amp;#039;&amp;#039;,&lt;br /&gt;
			parameter_format((prefix or &amp;#039;&amp;#039;) .. cfg_tp.check_assessment.parameter_suffix)&lt;br /&gt;
		)&lt;br /&gt;
		local list = mw.html.create(&amp;#039;ul&amp;#039;)&lt;br /&gt;
		for _, missing in ipairs(missing_cats) do&lt;br /&gt;
			list:tag(&amp;#039;li&amp;#039;):wikitext(missing):done()&lt;br /&gt;
		end&lt;br /&gt;
		list:done()&lt;br /&gt;
		if red_cats_in_use then&lt;br /&gt;
			add_tracking(cfg_tp.check_assessment.tracking)&lt;br /&gt;
		end&lt;br /&gt;
		return messageBox(&amp;#039;ombox&amp;#039;, {&lt;br /&gt;
			type = &amp;#039;content&amp;#039;,&lt;br /&gt;
			image = &amp;#039;[[File:&amp;#039; .. cfg_tp.check_assessment.icon .. &amp;#039;|50px]]&amp;#039;,&lt;br /&gt;
			text = intro .. tostring(list)&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
	return &amp;#039;&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
local missing_cats, warnings = {}, {}&lt;br /&gt;
local red_other_cats_in_use = false&lt;br /&gt;
local check_other_category = function(cat_name)&lt;br /&gt;
	if cat_name and cat_name~=&amp;#039;none&amp;#039; then&lt;br /&gt;
		local category = mw.title.new(&amp;#039;Category:&amp;#039; .. (cat_name or &amp;#039;&amp;#039;))&lt;br /&gt;
		if category and not category.exists then&lt;br /&gt;
		local pages_in_category = mw.site.stats.pagesInCategory(cat_name, &amp;#039;pages&amp;#039;)&lt;br /&gt;
			if pages_in_category&amp;gt;0 then&lt;br /&gt;
				red_other_cats_in_use = true&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(missing_cats, wikilink(&amp;#039;:&amp;#039; .. category.prefixedText))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
table.insert(warnings, check_assessment_categories(&lt;br /&gt;
	project,&lt;br /&gt;
	args.ASSESSMENT_CAT,&lt;br /&gt;
	raw_args.class and args.QUALITY_CRITERIA~=&amp;#039;custom&amp;#039;,&lt;br /&gt;
	(raw_args.importance or raw_args.priority) and (args.IMPORTANCE_SCALE or &amp;#039;&amp;#039;)&lt;br /&gt;
))&lt;br /&gt;
local ntf, check_task_forces = #task_forces, {}&lt;br /&gt;
if ntf&amp;gt;10 then -- too many task forces to check all, so check a selection instead&lt;br /&gt;
	local used = {}&lt;br /&gt;
	math.randomseed(os.time())&lt;br /&gt;
	for i = 1, 10 do&lt;br /&gt;
		local new&lt;br /&gt;
		repeat&lt;br /&gt;
			new = math.random(ntf)&lt;br /&gt;
		until not used[new]&lt;br /&gt;
		table.insert(check_task_forces, task_forces[new])&lt;br /&gt;
		used[new] = true&lt;br /&gt;
	end&lt;br /&gt;
	table.sort(check_task_forces, function (x, y) return tonumber(x) &amp;lt; tonumber(y) end)&lt;br /&gt;
	table.insert(notices, string.format(cfg_tp.check_assessment.too_many, table.concat(check_task_forces,&amp;#039;, &amp;#039;)))&lt;br /&gt;
else&lt;br /&gt;
	check_task_forces = task_forces&lt;br /&gt;
end&lt;br /&gt;
for _, k in ipairs(check_task_forces) do&lt;br /&gt;
	local tf_prefix = &amp;#039;TF_&amp;#039; .. k .. &amp;#039;_&amp;#039;&lt;br /&gt;
	table.insert(warnings, check_assessment_categories(&lt;br /&gt;
		project,&lt;br /&gt;
		args[tf_prefix..&amp;#039;ASSESSMENT_CAT&amp;#039;] or (args[tf_prefix..&amp;#039;NAME&amp;#039;] or &amp;#039;&amp;#039;)..&amp;#039; articles&amp;#039;,&lt;br /&gt;
		raw_args.class and yesno(args[tf_prefix..&amp;#039;QUALITY&amp;#039;]) and args.QUALITY_CRITERIA~=&amp;#039;custom&amp;#039;,&lt;br /&gt;
		raw_args[&amp;#039;tf &amp;#039;..k..&amp;#039; importance&amp;#039;] and (args.IMPORTANCE_SCALE or &amp;#039;&amp;#039;),&lt;br /&gt;
		tf_prefix,&lt;br /&gt;
		args[tf_prefix..&amp;#039;NAME&amp;#039;]&lt;br /&gt;
	))&lt;br /&gt;
	check_other_category(args[tf_prefix .. &amp;#039;MAIN_CAT&amp;#039;])&lt;br /&gt;
	for _, p in ipairs(taskforce_categories[k] or {}) do&lt;br /&gt;
		check_other_category(args[tf_prefix .. &amp;#039;CAT_&amp;#039; .. p])&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
---------------------------&lt;br /&gt;
-- Template categories ----&lt;br /&gt;
---------------------------&lt;br /&gt;
if on_sandbox then&lt;br /&gt;
	add_tracking(cfg_tp.template_categories.sandbox, true)&lt;br /&gt;
elseif inactive then&lt;br /&gt;
	add_tracking(cfg_tp.template_categories.inactive)&lt;br /&gt;
else&lt;br /&gt;
	if raw_args.class then&lt;br /&gt;
		add_tracking(cfg_tp.template_categories.with_quality)&lt;br /&gt;
	else&lt;br /&gt;
		add_tracking(cfg_tp.template_categories.without_quality)&lt;br /&gt;
	end&lt;br /&gt;
	if (args.PROJECT_NAME==&amp;#039;WikiProject &amp;#039;..project or not args.PROJECT_NAME) and current_page.rootPageTitle.prefixedText~=&amp;#039;Template:WikiProject &amp;#039; .. project then&lt;br /&gt;
		add_tracking(cfg_tp.template_categories.non_standard)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
---------------------------&lt;br /&gt;
-- Check parameters -------&lt;br /&gt;
---------------------------&lt;br /&gt;
local parameters = {}&lt;br /&gt;
local append_table = function(source)&lt;br /&gt;
	for _, v in ipairs(source) do&lt;br /&gt;
		table.insert(parameters, v)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
append_table(cfg_tp.parameters.parameters)&lt;br /&gt;
for _, k in ipairs(task_forces) do&lt;br /&gt;
	local task_force_parameters = {&amp;#039;tf &amp;#039;..k, &amp;#039;tf &amp;#039;..k..&amp;#039; importance&amp;#039;}&lt;br /&gt;
	local prefix = string.format(cfg_tp.parameters.taskforce.prefix, k) &lt;br /&gt;
	for _, p in ipairs(cfg_tp.parameters.taskforce.suffix) do&lt;br /&gt;
		table.insert(task_force_parameters, prefix .. p)&lt;br /&gt;
	end&lt;br /&gt;
	for _, p in ipairs(taskforce_categories[k] or {}) do&lt;br /&gt;
		table.insert(task_force_parameters, &amp;#039;tf &amp;#039; .. k .. &amp;#039; cat &amp;#039; .. p)&lt;br /&gt;
		table.insert(task_force_parameters, prefix .. &amp;#039;CAT_&amp;#039; .. p)&lt;br /&gt;
	end&lt;br /&gt;
	append_table(task_force_parameters)&lt;br /&gt;
end&lt;br /&gt;
for _, k in ipairs(notes) do&lt;br /&gt;
	local note_parameters = {&amp;#039;note &amp;#039;..k}&lt;br /&gt;
	local prefix = string.format(cfg_tp.parameters.note.prefix, k)&lt;br /&gt;
	for _, p in ipairs(cfg_tp.parameters.note.suffix) do&lt;br /&gt;
		table.insert(note_parameters, prefix .. p)&lt;br /&gt;
	end&lt;br /&gt;
	append_table(note_parameters)&lt;br /&gt;
	check_other_category(args[prefix .. &amp;#039;CAT&amp;#039;])&lt;br /&gt;
end&lt;br /&gt;
for _, set in ipairs(cfg_tp.parameters.extra) do&lt;br /&gt;
	local allow_parameters = false&lt;br /&gt;
	if set.trigger then&lt;br /&gt;
		table.insert(parameters, set.trigger)&lt;br /&gt;
		allow_parameters = raw_args[set.trigger] and true&lt;br /&gt;
	elseif set.triggers then&lt;br /&gt;
		append_table(set.triggers)&lt;br /&gt;
		for _, trig in ipairs(set.triggers) do&lt;br /&gt;
			if raw_args[trig] then&lt;br /&gt;
				allow_parameters = true&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if allow_parameters then&lt;br /&gt;
		append_table(set.parameters)&lt;br /&gt;
		if set.categories then&lt;br /&gt;
			append_table(set.categories)&lt;br /&gt;
			for _, cat in ipairs(set.categories) do&lt;br /&gt;
				check_other_category(args[cat])&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
parameters.preview = cfg_tp.parameters.preview&lt;br /&gt;
parameters.unknown = on_sandbox and &amp;#039;&amp;#039; or cfg_tp.parameters.category&lt;br /&gt;
local parameter_check = current_page.rootPageTitle.text==&amp;#039;WikiProject Military history&amp;#039; and &amp;#039;&amp;#039;&lt;br /&gt;
	or require(&amp;#039;Module:Check for unknown parameters&amp;#039;)._check(parameters, raw_args)&lt;br /&gt;
---------------------------&lt;br /&gt;
-- Other categories -------&lt;br /&gt;
---------------------------&lt;br /&gt;
if raw_args.attention then&lt;br /&gt;
	local attention_cat = args.ATTENTION_CAT or string.format(cfg.attention.default_cat, project)&lt;br /&gt;
	check_other_category(attention_cat)&lt;br /&gt;
end&lt;br /&gt;
if raw_args.infobox then&lt;br /&gt;
	local infobox_cat = args.INFOBOX_CAT or string.format(cfg.infobox.default_cat, project)&lt;br /&gt;
	check_other_category(infobox_cat)&lt;br /&gt;
end&lt;br /&gt;
if raw_args.auto then&lt;br /&gt;
	local auto_cat = args.AUTO_ASSESS_CAT or string.format(cfg.auto.default_cat, project)&lt;br /&gt;
	check_other_category(auto_cat)&lt;br /&gt;
end&lt;br /&gt;
check_other_category(args.MAIN_CAT)&lt;br /&gt;
if #missing_cats&amp;gt;0 then&lt;br /&gt;
	local list = mw.html.create(&amp;#039;ul&amp;#039;)&lt;br /&gt;
	for _, missing in ipairs(missing_cats) do&lt;br /&gt;
		list:tag(&amp;#039;li&amp;#039;):wikitext(missing):done()&lt;br /&gt;
	end&lt;br /&gt;
	list:done()&lt;br /&gt;
	table.insert(warnings, messageBox(&amp;#039;ombox&amp;#039;, {&lt;br /&gt;
		type = &amp;#039;content&amp;#039;,&lt;br /&gt;
		image = &amp;#039;[[File:&amp;#039; .. cfg_tp.check_other.icon .. &amp;#039;|50px]]&amp;#039;,&lt;br /&gt;
		text = cfg_tp.check_other.text .. tostring(list)&lt;br /&gt;
	}))&lt;br /&gt;
	if red_other_cats_in_use then&lt;br /&gt;
		add_tracking(cfg_tp.check_other.tracking)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
---------------------------&lt;br /&gt;
-- Produce notices --------&lt;br /&gt;
---------------------------&lt;br /&gt;
local notice_html, notice_list&lt;br /&gt;
if #notices&amp;gt;=1 then&lt;br /&gt;
	notice_html = mw.html.create(&amp;#039;ul&amp;#039;)&lt;br /&gt;
	for _, notice in ipairs(notices) do&lt;br /&gt;
		notice_html:tag(&amp;#039;li&amp;#039;):wikitext(notice):done()&lt;br /&gt;
	end&lt;br /&gt;
	notice_list = &amp;#039; &amp;#039; .. cfg_tp.notice_text .. tostring(notice_html)&lt;br /&gt;
end&lt;br /&gt;
local info =  messageBox(&amp;#039;ombox&amp;#039;, {&lt;br /&gt;
	type = &amp;#039;notice&amp;#039;,&lt;br /&gt;
	image = &amp;#039;[[File:Icon tools.svg|50px]]&amp;#039;,&lt;br /&gt;
	text = cfg_tp.info .. (notice_list or &amp;#039;&amp;#039;)&lt;br /&gt;
})&lt;br /&gt;
---------------------------&lt;br /&gt;
-- Auto documentation -----&lt;br /&gt;
---------------------------&lt;br /&gt;
local auto_doc, parameter_name = {}, {}&lt;br /&gt;
local class_module = require(&amp;#039;Module:Class&amp;#039;)&lt;br /&gt;
local template_code = mw.title.getCurrentTitle():getContent()&lt;br /&gt;
for _, parameter in ipairs(parameters) do&lt;br /&gt;
	parameter_name[parameter] = string.match(template_code, parameter..&amp;#039;%s*=%s*{%{%{([%a%d_%s-]*)&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
local show_param = function(parameter)&lt;br /&gt;
	local p = parameter_name[parameter]&lt;br /&gt;
	if p then&lt;br /&gt;
		table.insert(auto_doc, &amp;#039;|&amp;#039; .. p .. &amp;#039;= &amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
local add_title = function(title, level)&lt;br /&gt;
	local hl = &amp;#039;h&amp;#039; .. tostring(level or 2)&lt;br /&gt;
	table.insert(auto_doc, tostring(mw.html.create(hl):wikitext(title)) .. &amp;#039;\n&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
table.insert(auto_doc, &amp;#039;This is the WikiProject banner template used by &amp;#039; .. wikilink(project_link, (args.PROJECT_NAME or &amp;#039;WikiProject &amp;#039; .. project)) .. &amp;#039; to keep track of articles within its scope. &amp;#039;)&lt;br /&gt;
if args.MAIN_CAT then&lt;br /&gt;
	table.insert(auto_doc, &amp;#039;All articles are categorised into [[:Category:&amp;#039; .. args.MAIN_CAT .. &amp;#039;]].&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
add_title(&amp;#039;Basic usage&amp;#039;, 3)&lt;br /&gt;
table.insert(auto_doc, &amp;#039;Place this on the talk page of relevant articles:&amp;#039;)&lt;br /&gt;
table.insert(auto_doc, &amp;#039;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;{{&amp;#039; .. banner_name.text .. &amp;#039; &amp;#039;)&lt;br /&gt;
show_param(&amp;#039;class&amp;#039;)&lt;br /&gt;
if raw_args.importance then&lt;br /&gt;
	show_param(&amp;#039;importance&amp;#039;)&lt;br /&gt;
else&lt;br /&gt;
	show_param(&amp;#039;priority&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
table.insert(auto_doc, &amp;#039;}}&amp;lt;/code&amp;gt;&amp;#039;)&lt;br /&gt;
add_title(&amp;#039;Full usage&amp;#039;, 3)&lt;br /&gt;
table.insert(auto_doc, &amp;#039;It is usual to remove any unused parameters from the template call.&amp;#039;)&lt;br /&gt;
table.insert(auto_doc, &amp;#039;&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;{{&amp;#039; .. banner_name.text .. &amp;#039; &amp;#039;)&lt;br /&gt;
show_param(&amp;#039;class&amp;#039;)&lt;br /&gt;
if raw_args.importance then&lt;br /&gt;
	show_param(&amp;#039;importance&amp;#039;)&lt;br /&gt;
else&lt;br /&gt;
	show_param(&amp;#039;priority&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
show_param(&amp;#039;listas&amp;#039;)&lt;br /&gt;
show_param(&amp;#039;attention&amp;#039;)&lt;br /&gt;
show_param(&amp;#039;infobox&amp;#039;)&lt;br /&gt;
for _, k in ipairs(notes) do&lt;br /&gt;
	show_param(&amp;#039;note &amp;#039; .. k)&lt;br /&gt;
end&lt;br /&gt;
for _, k in ipairs(task_forces) do&lt;br /&gt;
	show_param(&amp;#039;tf &amp;#039; .. k)&lt;br /&gt;
	show_param(&amp;#039;tf &amp;#039; .. k .. &amp;#039; importance&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
table.insert(auto_doc, &amp;#039;}}&amp;lt;/code&amp;gt;&amp;#039;)&lt;br /&gt;
local list_item = function(text)&lt;br /&gt;
	return mw.html.create(&amp;#039;li&amp;#039;):wikitext(text):done()&lt;br /&gt;
end&lt;br /&gt;
add_title(&amp;#039;Parameters&amp;#039;)&lt;br /&gt;
local parameter_list = {}&lt;br /&gt;
local add_list = function()&lt;br /&gt;
	local out = mw.html.create(&amp;#039;ul&amp;#039;)&lt;br /&gt;
	for _, v in ipairs(parameter_list) do&lt;br /&gt;
		out:node(v)&lt;br /&gt;
	end&lt;br /&gt;
	table.insert(auto_doc, tostring(out:done()))&lt;br /&gt;
	parameter_list = {} -- reset list to blank&lt;br /&gt;
end&lt;br /&gt;
local parameter_description = function(parameter, text)&lt;br /&gt;
	local trigger = raw_args[parameter]&lt;br /&gt;
	if trigger then&lt;br /&gt;
		local p_name = parameter_name[parameter] or parameter&lt;br /&gt;
		if p_name then&lt;br /&gt;
			local desc = &amp;#039;&amp;lt;b&amp;gt;&amp;#039; .. p_name .. &amp;#039;&amp;lt;/b&amp;gt; – &amp;#039; .. text&lt;br /&gt;
				:gsub(&amp;#039;_PARAMETER_&amp;#039;, parameter_format(p_name))&lt;br /&gt;
				:gsub(&amp;#039;_PARAMETER%|?(%a*)_&amp;#039;, parameter_format(p_name, &amp;#039;%1&amp;#039;))&lt;br /&gt;
				:gsub(&amp;#039;_PAGETYPE_&amp;#039;, &amp;#039;article&amp;#039;)&lt;br /&gt;
			table.insert(parameter_list, list_item(desc))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
parameter_description(&amp;#039;category&amp;#039;, cfg.auto_doc.category)&lt;br /&gt;
parameter_description(&amp;#039;listas&amp;#039;, cfg.auto_doc.listas:format(&lt;br /&gt;
	&amp;#039;John Smith&amp;#039;, parameter_format(&amp;#039;listas&amp;#039;, &amp;#039;Smith, John&amp;#039;), &amp;#039;Smith&amp;#039;, &amp;#039;John&amp;#039;,&lt;br /&gt;
	&amp;#039;The Matrix&amp;#039;, parameter_format(&amp;#039;listas&amp;#039;, &amp;#039;Matrix, The&amp;#039;), &amp;#039;Matrix&amp;#039;&lt;br /&gt;
))&lt;br /&gt;
parameter_description(&amp;#039;class&amp;#039;, cfg.auto_doc.quality.see_below)&lt;br /&gt;
parameter_description(&amp;#039;importance&amp;#039;, cfg.auto_doc.importance.see_below)&lt;br /&gt;
add_list()&lt;br /&gt;
if raw_args.attention or raw_args.infobox or #notes&amp;gt;0 then&lt;br /&gt;
	add_title(&amp;#039;Notes and alerts&amp;#039;, 3)&lt;br /&gt;
end&lt;br /&gt;
parameter_description(&amp;#039;auto&amp;#039;, cfg.auto_doc.auto:format(args.AUTO_ASSESS_CAT or cfg.auto.default_cat:format(project)))&lt;br /&gt;
parameter_description(&amp;#039;attention&amp;#039;, cfg.auto_doc.attention:format(args.ATTENTION_CAT or cfg.attention.default_cat:format(project)))&lt;br /&gt;
parameter_description(&amp;#039;infobox&amp;#039;, cfg.auto_doc.infobox:format(args.INFOBOX_CAT or cfg.infobox.default_cat:format(project)))&lt;br /&gt;
local note_doc = function(k)&lt;br /&gt;
	local text = cfg.auto_doc.note.yes_no&lt;br /&gt;
	if args[&amp;#039;NOTE_&amp;#039;..k..&amp;#039;_TEXT&amp;#039;] then&lt;br /&gt;
		text = text ..  cfg.auto_doc.note.text:format(args[&amp;#039;NOTE_&amp;#039;..k..&amp;#039;_TEXT&amp;#039;])&lt;br /&gt;
	end&lt;br /&gt;
	if args[&amp;#039;NOTE_&amp;#039;..k..&amp;#039;_CAT&amp;#039;] then&lt;br /&gt;
		text = text ..  &amp;#039; &amp;#039; .. cfg.auto_doc.note.category:format(args[&amp;#039;NOTE_&amp;#039;..k..&amp;#039;_CAT&amp;#039;])&lt;br /&gt;
	end&lt;br /&gt;
	parameter_description(&amp;#039;note &amp;#039;..k, text)&lt;br /&gt;
end&lt;br /&gt;
for _, k in ipairs(notes) do&lt;br /&gt;
	note_doc(k)&lt;br /&gt;
end&lt;br /&gt;
add_list()&lt;br /&gt;
if #task_forces&amp;gt;0 then&lt;br /&gt;
	add_title(&amp;#039;Task forces&amp;#039;, 3)&lt;br /&gt;
end&lt;br /&gt;
local tf_doc = function(k)&lt;br /&gt;
	local tf_imp_name = raw_args[&amp;#039;tf &amp;#039; .. k .. &amp;#039; importance&amp;#039;] and parameter_name[&amp;#039;tf &amp;#039; .. k .. &amp;#039; importance&amp;#039;]&lt;br /&gt;
	local prefix = &amp;#039;TF_&amp;#039; .. k .. &amp;#039;_&amp;#039;&lt;br /&gt;
	local text = cfg.auto_doc.task_force.yes_no:format(&lt;br /&gt;
		args[prefix..&amp;#039;LINK&amp;#039;] or &amp;#039;&amp;#039;,&lt;br /&gt;
		args[prefix..&amp;#039;NAME&amp;#039;] or &amp;#039;&amp;#039;&lt;br /&gt;
	)&lt;br /&gt;
	if args[prefix..&amp;#039;MAIN_CAT&amp;#039;] then&lt;br /&gt;
		text = text .. &amp;#039; &amp;#039; .. cfg.auto_doc.task_force.category:format(args[prefix..&amp;#039;MAIN_CAT&amp;#039;])&lt;br /&gt;
	end&lt;br /&gt;
	if yesno(args[prefix..&amp;#039;QUALITY&amp;#039;]) and args[prefix..&amp;#039;ASSESSMENT_CAT&amp;#039;] then&lt;br /&gt;
		text = text .. &amp;#039; &amp;#039; .. cfg.auto_doc.task_force.class:format(&lt;br /&gt;
			args[prefix..&amp;#039;ASSESSMENT_CAT&amp;#039;],&lt;br /&gt;
			&amp;#039;class&amp;#039;&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
	if tf_imp_name and args[prefix..&amp;#039;ASSESSMENT_CAT&amp;#039;] then&lt;br /&gt;
		text = text .. &amp;#039; &amp;#039; .. cfg.auto_doc.task_force.importance:format(&lt;br /&gt;
			parameter_format(tf_imp_name),&lt;br /&gt;
			args[prefix..&amp;#039;ASSESSMENT_CAT&amp;#039;]&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
	parameter_description(&amp;#039;tf &amp;#039;..k, text)&lt;br /&gt;
end&lt;br /&gt;
for _, k in ipairs(task_forces) do&lt;br /&gt;
	tf_doc(k)&lt;br /&gt;
end&lt;br /&gt;
add_list()&lt;br /&gt;
local assessment_cat = args.ASSESSMENT_CAT or project .. &amp;#039; articles&amp;#039;&lt;br /&gt;
if raw_args.class then&lt;br /&gt;
	add_title(cfg.auto_doc.quality.heading)&lt;br /&gt;
	local text&lt;br /&gt;
	if args.QUALITY_CRITERIA==&amp;#039;custom&amp;#039; and assessment_link then&lt;br /&gt;
		local scale = cfg.quality.project_scale:format(wikilink(assessment_link..&amp;#039;#&amp;#039;..lang:ucfirst(cfg.quality.name), cfg.quality.name))&lt;br /&gt;
		text = cfg.auto_doc.quality.custom:format(scale)&lt;br /&gt;
	else&lt;br /&gt;
		text = cfg.auto_doc.quality.default:format(cfg.quality.default_scale)&lt;br /&gt;
	end&lt;br /&gt;
	table.insert(auto_doc, text)&lt;br /&gt;
	local exists = {}&lt;br /&gt;
	add_title(cfg.auto_doc.quality.class_parameter, 3)&lt;br /&gt;
	local add_row = function(class, input, rowspan)&lt;br /&gt;
		local cat = class..&amp;#039;-Class &amp;#039;..assessment_cat&lt;br /&gt;
		return mw.html.create(&amp;#039;tr&amp;#039;)&lt;br /&gt;
			:tag(&amp;#039;th&amp;#039;):wikitext(input or class):done()&lt;br /&gt;
			:tag(&amp;#039;td&amp;#039;):attr(&amp;#039;rowspan&amp;#039;, rowspan or 1):css(&amp;#039;text-align&amp;#039;, &amp;#039;center&amp;#039;):wikitext(class_module.icon{class}):done()&lt;br /&gt;
			:node(class_module._class{class, category=assessment_cat, image=&amp;#039;no&amp;#039;, rowspan=rowspan or 1})&lt;br /&gt;
			:tag(&amp;#039;td&amp;#039;):attr(&amp;#039;rowspan&amp;#039;, rowspan or 1):wikitext(wikilink(&amp;#039;:Category:&amp;#039;..cat)):done()&lt;br /&gt;
			:tag(&amp;#039;td&amp;#039;):attr(&amp;#039;rowspan&amp;#039;, rowspan or 1):css(&amp;#039;text-align&amp;#039;, &amp;#039;right&amp;#039;):wikitext(lang:formatNum(mw.site.stats.pagesInCategory(cat))):done()&lt;br /&gt;
	end&lt;br /&gt;
	local class_table = mw.html.create(&amp;#039;table&amp;#039;)&lt;br /&gt;
		:addClass(&amp;#039;wikitable&amp;#039;)&lt;br /&gt;
		:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
			:tag(&amp;#039;th&amp;#039;):wikitext(cfg.auto_doc.quality._table._input):done()&lt;br /&gt;
			:tag(&amp;#039;th&amp;#039;):wikitext(cfg.auto_doc.quality._table.icon):done()&lt;br /&gt;
			:tag(&amp;#039;th&amp;#039;):wikitext(cfg.auto_doc.quality._table.class):done()&lt;br /&gt;
			:tag(&amp;#039;th&amp;#039;):wikitext(cfg.auto_doc.quality._table.category):done()&lt;br /&gt;
			:tag(&amp;#039;th&amp;#039;):wikitext(cfg.auto_doc.quality._table.population):done()&lt;br /&gt;
		:done()&lt;br /&gt;
	for _, class in ipairs{&amp;#039;FA&amp;#039;, &amp;#039;A&amp;#039;, &amp;#039;GA&amp;#039;} do&lt;br /&gt;
		class_table:node(add_row(class))&lt;br /&gt;
	end&lt;br /&gt;
	local b_checklist = raw_args.b1 or raw_args.b2 or raw_args.b3 or raw_args.b4 or raw_args.b5 or raw_args.b6&lt;br /&gt;
	if b_checklist then&lt;br /&gt;
		class_table:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
			:tag(&amp;#039;th&amp;#039;):wikitext(&amp;#039;B&amp;#039;):done()&lt;br /&gt;
			:tag(&amp;#039;td&amp;#039;):attr(&amp;#039;rowspan&amp;#039;, 2):attr(&amp;#039;colspan&amp;#039;, 4):wikitext(&amp;#039;Depends on status of B-class checklist - [[#B-class checklist|see below]]&amp;#039;):done()&lt;br /&gt;
			:done():tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
			:tag(&amp;#039;th&amp;#039;):wikitext(&amp;#039;C&amp;#039;):done():done()&lt;br /&gt;
	else&lt;br /&gt;
		class_table:node(add_row(&amp;#039;B&amp;#039;))&lt;br /&gt;
		class_table:node(add_row(&amp;#039;C&amp;#039;))&lt;br /&gt;
	end&lt;br /&gt;
	for _, class in ipairs{&amp;#039;Start&amp;#039;, &amp;#039;Stub&amp;#039;, &amp;#039;FL&amp;#039;, &amp;#039;List&amp;#039;, &amp;#039;NA&amp;#039;} do&lt;br /&gt;
		class_table:node(add_row(class))&lt;br /&gt;
	end&lt;br /&gt;
	for _, class in ipairs(cfg.auto_doc.quality.extended) do&lt;br /&gt;
		local cat = mw.title.new(&amp;#039;Category:&amp;#039; .. class .. &amp;#039;-Class &amp;#039; .. assessment_cat)&lt;br /&gt;
		if cat.exists and #cat:getContent()&amp;gt;1 then&lt;br /&gt;
			exists[class] = true&lt;br /&gt;
			class_table:node(add_row(class))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	table.insert(auto_doc, tostring(class_table))&lt;br /&gt;
	add_title(cfg.auto_doc.quality.redirect, 3)&lt;br /&gt;
	local redirects = cfg.auto_doc.quality.redirects:format(&lt;br /&gt;
		exists.Redirect and &amp;#039;Redirect&amp;#039; or &amp;#039;NA&amp;#039;,&lt;br /&gt;
		wikilink(&amp;#039;:Category:&amp;#039; .. (exists.Redirect and &amp;#039;Redirect&amp;#039; or &amp;#039;NA&amp;#039;) .. &amp;#039;-Class &amp;#039; ..assessment_cat)&lt;br /&gt;
	)&lt;br /&gt;
	local dabs = cfg.auto_doc.quality.dabs:format(&lt;br /&gt;
		exists.Disambig and &amp;#039;Disambig&amp;#039; or &amp;#039;NA&amp;#039;,&lt;br /&gt;
		wikilink(&amp;#039;:Category:&amp;#039; .. (exists.Disambig and &amp;#039;Disambig&amp;#039; or &amp;#039;NA&amp;#039;) .. &amp;#039;-Class &amp;#039; ..assessment_cat)&lt;br /&gt;
	)&lt;br /&gt;
	table.insert(auto_doc, cfg.auto_doc.quality.not_defined)&lt;br /&gt;
	local list = mw.html.create(&amp;#039;ul&amp;#039;)&lt;br /&gt;
		:tag(&amp;#039;li&amp;#039;):wikitext(redirects):done()&lt;br /&gt;
		:tag(&amp;#039;li&amp;#039;):wikitext(dabs):done()&lt;br /&gt;
	:done()&lt;br /&gt;
	table.insert(auto_doc, tostring(list))&lt;br /&gt;
	add_title(cfg.auto_doc.quality.namespace, 3)&lt;br /&gt;
	table.insert(auto_doc, cfg.auto_doc.quality.deduced)&lt;br /&gt;
	local first_col = function(text)&lt;br /&gt;
		return mw.html.create(&amp;#039;tr&amp;#039;):tag(&amp;#039;th&amp;#039;):wikitext(text):allDone()&lt;br /&gt;
	end&lt;br /&gt;
	local namespace_table = mw.html.create(&amp;#039;table&amp;#039;)&lt;br /&gt;
		:addClass(&amp;#039;wikitable&amp;#039;)&lt;br /&gt;
		:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
			:tag(&amp;#039;th&amp;#039;):wikitext(cfg.auto_doc.quality._table.namespace):done()&lt;br /&gt;
			:tag(&amp;#039;th&amp;#039;):wikitext(cfg.auto_doc.quality._table.icon):done()&lt;br /&gt;
			:tag(&amp;#039;th&amp;#039;):wikitext(cfg.auto_doc.quality._table.class):done()&lt;br /&gt;
			:tag(&amp;#039;th&amp;#039;):wikitext(cfg.auto_doc.quality._table.category):done()&lt;br /&gt;
			:tag(&amp;#039;th&amp;#039;):wikitext(cfg.auto_doc.quality._table.population):done()&lt;br /&gt;
		:done()&lt;br /&gt;
	local na_rowspan = 5&lt;br /&gt;
		+ (exists.File and 0 or 2)&lt;br /&gt;
		+ (exists.Category and 0 or 1)&lt;br /&gt;
		+ (exists.Portal and 0 or 1)&lt;br /&gt;
		+ (exists.Template and 0 or 2)&lt;br /&gt;
		+ (exists.Project and 0 or 1)&lt;br /&gt;
		+ (exists.Draft and 0 or 1)&lt;br /&gt;
	namespace_table:node(add_row(&amp;#039;NA&amp;#039;, &amp;#039;User talk&amp;#039;, na_rowspan))&lt;br /&gt;
	:node(not exists.File and first_col(&amp;#039;File talk&amp;#039;))&lt;br /&gt;
	:node(not exists.File and first_col(&amp;#039;TimedText talk&amp;#039;))&lt;br /&gt;
	:node(not exists.Category and first_col(&amp;#039;Category talk&amp;#039;))&lt;br /&gt;
	:node(not exists.Portal and first_col(&amp;#039;Portal talk&amp;#039;))&lt;br /&gt;
	:node(not exists.Template and first_col(&amp;#039;Template talk&amp;#039;))&lt;br /&gt;
	:node(not exists.Template and first_col(&amp;#039;Module talk&amp;#039;))&lt;br /&gt;
	:node(not exists.Project and first_col(&amp;#039;Project talk&amp;#039;))&lt;br /&gt;
	:node(not exists.Draft and first_col(&amp;#039;Draft talk&amp;#039;))&lt;br /&gt;
	:node(first_col(&amp;#039;Help talk&amp;#039;))&lt;br /&gt;
	:node(first_col(&amp;#039;MediaWiki talk&amp;#039;))&lt;br /&gt;
	:node(first_col(&amp;#039;Gadget talk&amp;#039;))&lt;br /&gt;
	:node(first_col(&amp;#039;Gadget definition talk&amp;#039;))&lt;br /&gt;
	:node(exists.File and add_row(&amp;#039;File&amp;#039;, &amp;#039;File talk&amp;#039;, 2))&lt;br /&gt;
	:node(exists.File and first_col(&amp;#039;TimedText talk&amp;#039;))&lt;br /&gt;
	:node(exists.Category and add_row(&amp;#039;Category&amp;#039;, &amp;#039;Category talk&amp;#039;))&lt;br /&gt;
	:node(exists.Portal and add_row(&amp;#039;Portal&amp;#039;, &amp;#039;Portal talk&amp;#039;))&lt;br /&gt;
	:node(exists.Template and add_row(&amp;#039;Template&amp;#039;, &amp;#039;Template talk&amp;#039;, 2))&lt;br /&gt;
	:node(exists.Template and first_col(&amp;#039;Module talk&amp;#039;))&lt;br /&gt;
	:node(exists.Project and add_row(&amp;#039;Project&amp;#039;, &amp;#039;Project talk&amp;#039;))&lt;br /&gt;
	:node(exists.Draft and add_row(&amp;#039;Draft&amp;#039;, &amp;#039;Draft talk&amp;#039;))&lt;br /&gt;
	table.insert(auto_doc, tostring(namespace_table))&lt;br /&gt;
	table.insert(auto_doc, cfg.auto_doc.quality.other:format(assessment_cat))&lt;br /&gt;
end&lt;br /&gt;
if raw_args.importance and args.IMPORTANCE_SCALE~=&amp;#039;inline&amp;#039; and args.IMPORTANCE_SCALE~=&amp;#039;subpage&amp;#039; then&lt;br /&gt;
	add_title(cfg.auto_doc.importance.heading)&lt;br /&gt;
	table.insert(auto_doc, cfg.auto_doc.importance.standard)&lt;br /&gt;
	local add_row = function(importance)&lt;br /&gt;
		local cat = importance..&amp;#039;-importance &amp;#039;..assessment_cat&lt;br /&gt;
		return mw.html.create(&amp;#039;tr&amp;#039;)&lt;br /&gt;
			:tag(&amp;#039;th&amp;#039;):wikitext(importance):done()&lt;br /&gt;
			:node(frame:expandTemplate{title=&amp;#039;Template:Importance&amp;#039;, args={importance, category=assessment_cat}})&lt;br /&gt;
			:tag(&amp;#039;td&amp;#039;):wikitext(wikilink(&amp;#039;:Category:&amp;#039;..cat)):done()&lt;br /&gt;
			:tag(&amp;#039;td&amp;#039;):css(&amp;#039;text-align&amp;#039;, &amp;#039;right&amp;#039;):wikitext(lang:formatNum(mw.site.stats.pagesInCategory(cat))):done()&lt;br /&gt;
	end&lt;br /&gt;
	local imp_table = mw.html.create(&amp;#039;table&amp;#039;)&lt;br /&gt;
		:addClass(&amp;#039;wikitable&amp;#039;)&lt;br /&gt;
		:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
			:tag(&amp;#039;th&amp;#039;):wikitext(cfg.auto_doc.importance._table.input):done()&lt;br /&gt;
			:tag(&amp;#039;th&amp;#039;):wikitext(cfg.auto_doc.importance._table.importance):done()&lt;br /&gt;
			:tag(&amp;#039;th&amp;#039;):wikitext(cfg.auto_doc.importance._table.category):done()&lt;br /&gt;
			:tag(&amp;#039;th&amp;#039;):wikitext(cfg.auto_doc.importance._table.population):done()&lt;br /&gt;
		:done()&lt;br /&gt;
	for _, importance in ipairs(cfg.auto_doc.importance.classes) do&lt;br /&gt;
		imp_table:node(add_row(importance))&lt;br /&gt;
	end&lt;br /&gt;
	table.insert(auto_doc, tostring(imp_table))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local doc = &amp;#039;&amp;#039;&lt;br /&gt;
if args.DOC==&amp;#039;auto&amp;#039; or args.DOC==&amp;#039;auto+custom&amp;#039; then&lt;br /&gt;
	local not_documented = {&amp;#039;INHERIT_IMPORTANCE&amp;#039;, &amp;#039;priority&amp;#039;, &amp;#039;IMPN&amp;#039;, &amp;#039;QII_FORMAT&amp;#039;, &amp;#039;image-needed&amp;#039;, &amp;#039;collaboration-candidate&amp;#039;, &amp;#039;collaboration-current&amp;#039;, &amp;#039;collaboration-past&amp;#039;, &amp;#039;a class&amp;#039;, &amp;#039;peer review&amp;#039;, &amp;#039;old peer review&amp;#039;}&lt;br /&gt;
	local doc_missing = false&lt;br /&gt;
	for _, p in ipairs(not_documented) do&lt;br /&gt;
		if raw_args[p] then&lt;br /&gt;
			doc_missing = p&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if doc_missing then&lt;br /&gt;
		add_tracking{&lt;br /&gt;
			category = &amp;#039;WikiProject banner templates using undocumented features&amp;#039;,&lt;br /&gt;
			sort_key = doc_missing&lt;br /&gt;
		}&lt;br /&gt;
	end&lt;br /&gt;
	doc = require(&amp;#039;Module:Documentation&amp;#039;).main{content = table.concat(auto_doc)}&lt;br /&gt;
end&lt;br /&gt;
if args.DOC==&amp;#039;custom&amp;#039; or args.DOC==&amp;#039;auto+custom&amp;#039; then&lt;br /&gt;
	doc = doc .. require(&amp;#039;Module:Documentation&amp;#039;).main()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return parameter_check .. demo_banner .. info .. (inactive and &amp;#039;&amp;#039; or table.concat(warnings)) .. table.concat(tracking_cats) .. doc&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>en&gt;MSGJ</name></author>
	</entry>
</feed>