<?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%3AClass_mask</id>
	<title>Module:Class mask - 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%3AClass_mask"/>
	<link rel="alternate" type="text/html" href="https://capipedia.cap.gov/index.php?title=Module:Class_mask&amp;action=history"/>
	<updated>2026-05-10T16:45:48Z</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:Class_mask&amp;diff=1643&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:Class_mask&amp;diff=1643&amp;oldid=prev"/>
		<updated>2024-01-12T15:41:29Z</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:Class_mask&amp;diff=1642&amp;oldid=prev</id>
		<title>en&gt;MSGJ: restore option for class=disambig, since auto detection is not always working as intended</title>
		<link rel="alternate" type="text/html" href="https://capipedia.cap.gov/index.php?title=Module:Class_mask&amp;diff=1642&amp;oldid=prev"/>
		<updated>2023-12-03T20:19:03Z</updated>

		<summary type="html">&lt;p&gt;restore option for class=disambig, since auto detection is not always working as intended&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
local isarticle = function(class)&lt;br /&gt;
	local nonarticleclasses = {&amp;#039;Template&amp;#039;, &amp;#039;File&amp;#039;, &amp;#039;Category&amp;#039;, &amp;#039;Disambig&amp;#039;, &amp;#039;Redirect&amp;#039;, &amp;#039;Portal&amp;#039;, &amp;#039;Project&amp;#039;, &amp;#039;Draft&amp;#039;, &amp;#039;Book&amp;#039;, &amp;#039;FM&amp;#039;} -- these classes will not be identified as conflicting with NA-class&lt;br /&gt;
	local article = true&lt;br /&gt;
	for _,v in ipairs(nonarticleclasses) do&lt;br /&gt;
		if class==v then -- class matches one of the non-article classes&lt;br /&gt;
			article = false&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return article&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local ucfirst = function(s)&lt;br /&gt;
	-- Returns the given string with the first character in upper case.&lt;br /&gt;
	-- Should not be used with non-ascii strings.&lt;br /&gt;
	return s:sub(1, 1):upper() .. s:sub(2, -1)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local resolveFQSgrade = function(grade, args)&lt;br /&gt;
	if (args[grade] or args.FQS)==&amp;#039;yes&amp;#039; then&lt;br /&gt;
		return ucfirst(grade)&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;#039;NA&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p._main = function(args, title)&lt;br /&gt;
	title = title or mw.title.getCurrentTitle()&lt;br /&gt;
	local out = &amp;#039;&amp;#039;&lt;br /&gt;
	local grade = args[1]&lt;br /&gt;
	if not grade or grade==&amp;#039;¬&amp;#039; then -- undefined&lt;br /&gt;
		out = &amp;#039;¬&amp;#039;&lt;br /&gt;
	else&lt;br /&gt;
		local ns = title.namespace&lt;br /&gt;
		grade = grade:match(&amp;#039;^%s*(.-)%s*$&amp;#039;):lower()&lt;br /&gt;
		if title.subjectPageTitle.isRedirect then&lt;br /&gt;
			out = resolveFQSgrade(&amp;#039;redirect&amp;#039;,args)&lt;br /&gt;
		elseif ns==1 then -- Talk&lt;br /&gt;
			if require(&amp;#039;Module:Disambiguation&amp;#039;).isDisambiguation(title.subjectPageTitle:getContent()) then&lt;br /&gt;
				out = resolveFQSgrade(&amp;#039;disambig&amp;#039;,args)&lt;br /&gt;
			else&lt;br /&gt;
				if grade==&amp;#039;start&amp;#039; or grade==&amp;#039;stub&amp;#039; then -- Ucfirst&lt;br /&gt;
					if args[grade]~=&amp;#039;no&amp;#039; then&lt;br /&gt;
						out = ucfirst(grade)&lt;br /&gt;
					end&lt;br /&gt;
				elseif grade==&amp;#039;b&amp;#039; or grade==&amp;#039;c&amp;#039; or grade==&amp;#039;fa&amp;#039; or grade==&amp;#039;fl&amp;#039; or grade==&amp;#039;a&amp;#039; or grade==&amp;#039;ga&amp;#039; then -- Upper-case&lt;br /&gt;
					if args[grade]~=&amp;#039;no&amp;#039; then&lt;br /&gt;
						out = grade:upper()&lt;br /&gt;
					end&lt;br /&gt;
				elseif args[grade:upper()] then -- Upper-case syntax&lt;br /&gt;
					out = args[grade:upper()]&lt;br /&gt;
				elseif args[grade:lower()]==&amp;#039;yes&amp;#039; then -- Lower-case syntax&lt;br /&gt;
					out = mw.language.getContentLanguage():ucfirst(grade:lower())&lt;br /&gt;
				elseif grade==&amp;#039;list&amp;#039; or grade==&amp;#039;sia&amp;#039; or grade==&amp;#039;si&amp;#039; or grade==&amp;#039;sl&amp;#039; then-- List&lt;br /&gt;
					if args[&amp;#039;list&amp;#039;]~=&amp;#039;no&amp;#039; then&lt;br /&gt;
						out = &amp;#039;List&amp;#039;&lt;br /&gt;
					end&lt;br /&gt;
				elseif grade==&amp;#039;dab&amp;#039; or grade==&amp;#039;disambig&amp;#039; or grade==&amp;#039;disambiguation&amp;#039; or grade==&amp;#039;disamb&amp;#039; then&lt;br /&gt;
					out = resolveFQSgrade(&amp;#039;disambig&amp;#039;, args)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		elseif ns==7 or ns==711 then -- File talk&lt;br /&gt;
			if grade==&amp;#039;fm&amp;#039; and (args.fm or args.FQS)==&amp;#039;yes&amp;#039; then&lt;br /&gt;
				out = &amp;#039;FM&amp;#039;&lt;br /&gt;
			else&lt;br /&gt;
				out = resolveFQSgrade(&amp;#039;file&amp;#039;, args)&lt;br /&gt;
			end&lt;br /&gt;
		elseif ns==15 then -- Category talk&lt;br /&gt;
			out = resolveFQSgrade(&amp;#039;category&amp;#039;, args)&lt;br /&gt;
		elseif ns==101 then -- Portal talk&lt;br /&gt;
			out = resolveFQSgrade(&amp;#039;portal&amp;#039;, args)&lt;br /&gt;
		elseif ns==11 or ns==829 then -- Template talk&lt;br /&gt;
			out = resolveFQSgrade(&amp;#039;template&amp;#039;, args)&lt;br /&gt;
		elseif ns==5 then -- Wikipedia talk&lt;br /&gt;
			out = resolveFQSgrade(&amp;#039;project&amp;#039;, args)&lt;br /&gt;
		elseif ns==119 then -- Draft talk&lt;br /&gt;
			out = resolveFQSgrade(&amp;#039;draft&amp;#039;, args)&lt;br /&gt;
		elseif ns==13 and args[&amp;#039;help&amp;#039;]==&amp;#039;yes&amp;#039; then -- Help talk&lt;br /&gt;
			out = &amp;#039;Help&amp;#039;&lt;br /&gt;
		elseif ns==3 and args[&amp;#039;user&amp;#039;]==&amp;#039;yes&amp;#039; then -- User talk&lt;br /&gt;
			out = &amp;#039;User&amp;#039;&lt;br /&gt;
		else&lt;br /&gt;
			out = &amp;#039;NA&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.main = function(frame)&lt;br /&gt;
	local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
	local args = getArgs(frame, {&lt;br /&gt;
		removeBlanks = false,&lt;br /&gt;
		wrappers = &amp;#039;Template:Class mask&amp;#039;&lt;br /&gt;
	})&lt;br /&gt;
	return p._main(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local getclass = function(args, title)&lt;br /&gt;
	local class = &amp;#039;¬&amp;#039;&lt;br /&gt;
	if args.QUALITY_SCALE == &amp;#039;inline&amp;#039; then&lt;br /&gt;
		class = args.class&lt;br /&gt;
	elseif args.QUALITY_SCALE == &amp;#039;subpage&amp;#039; then&lt;br /&gt;
		if mw.title.new(args.BANNER_NAME..&amp;#039;/class&amp;#039;).exists then&lt;br /&gt;
			local frame = mw.getCurrentFrame()&lt;br /&gt;
			class = frame:expandTemplate{title = args.BANNER_NAME..&amp;#039;/class&amp;#039;, args = args}&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		args.FQS = (args.QUALITY_SCALE == &amp;#039;extended&amp;#039;) and &amp;#039;yes&amp;#039; or &amp;#039;no&amp;#039;&lt;br /&gt;
		args[1] = args.class&lt;br /&gt;
		class = p._main(args, title)&lt;br /&gt;
	end&lt;br /&gt;
	return class&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.readarticleclass = function(options, page) -- used by p._quality and Module:Banner shell&lt;br /&gt;
	page = page or mw.title.getCurrentTitle().prefixedText&lt;br /&gt;
	local get_parameter_value = require(&amp;quot;Module:Template parameter value&amp;quot;).getValue&lt;br /&gt;
	local WPBSredirects = {&amp;#039;WikiProject banner shell&amp;#039;,&amp;#039;WikiProject banner shell/sandbox&amp;#039;,&amp;#039;Bannershell&amp;#039;,&amp;#039;Multiple wikiprojects&amp;#039;,&amp;#039;Project shell&amp;#039;,&amp;#039;Scope shell&amp;#039;,&amp;#039;WPB&amp;#039;,&amp;#039;WPBS&amp;#039;,&amp;#039;WPBannerShell&amp;#039;,&amp;#039;WP Banner Shell&amp;#039;,&amp;#039;WP banner shell&amp;#039;,&amp;#039;WikiProjectBannerShell&amp;#039;,&amp;#039;WikiProjectBanner Shell&amp;#039;,&amp;#039;WikiProjectBanners&amp;#039;,&amp;#039;WikiProject BannerShell&amp;#039;,&amp;#039;WikiProject Banner Shell&amp;#039;,&amp;#039;WikiProject Banners&amp;#039;,&amp;#039;WikiProject Banners Shell&amp;#039;,&amp;#039;WikiProject Shell&amp;#039;,&amp;#039;WikiProject banner&amp;#039;,&amp;#039;WikiProject banner shell/redirect&amp;#039;,&amp;#039;WikiProject shell&amp;#039;,&amp;#039;WikiprojectBannerShell&amp;#039;,&amp;#039;Wikiproject banner holder&amp;#039;,&amp;#039;Wikiproject banner shell&amp;#039;,&amp;#039;Wikiprojectbanners&amp;#039;,&amp;#039;Wikiprojectbannershell&amp;#039;,&amp;#039;Wpb&amp;#039;,&amp;#039;Wpbannershell&amp;#039;,&amp;#039;Wpbsgclass&amp;#039;}&lt;br /&gt;
	local success, result = get_parameter_value(page, WPBSredirects, &amp;quot;class&amp;quot;, options)&lt;br /&gt;
	return success and result&lt;br /&gt;
	-- returns FALSE if banner shell template does not exist on page&lt;br /&gt;
	-- returns BLANK if class parameter is not defined or is defined blank&lt;br /&gt;
	-- otherwise returns class parameter&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p._quality = function(args)&lt;br /&gt;
	local title = args.page and mw.title.new(args.page) or mw.title.getCurrentTitle()&lt;br /&gt;
	local local_class = getclass(args, title)&lt;br /&gt;
	local prefix, class = &amp;#039;Y&amp;#039;, local_class&lt;br /&gt;
	if local_class==&amp;#039;¬&amp;#039; then&lt;br /&gt;
		class = &amp;#039;¬&amp;#039;&lt;br /&gt;
	elseif args.QUALITY_CRITERIA ~= &amp;#039;custom&amp;#039; then -- project uses standard scale and will inherit article class if needed&lt;br /&gt;
		local article_class = p.readarticleclass({ignore_subtemplates=true},title.prefixedText)&lt;br /&gt;
		article_class = article_class and p._main({article_class}, title)&lt;br /&gt;
		if article_class then -- banner shell exists&lt;br /&gt;
			if article_class == &amp;#039;&amp;#039; then -- no article class defined&lt;br /&gt;
				if local_class == &amp;#039;&amp;#039; then -- local class also does not exist, check whether any other class parameters are defined inside the shell&lt;br /&gt;
					local classparam = p.readarticleclass({ignore_blank=true, only_subtemplates=true},title.prefixedText)&lt;br /&gt;
					if classparam == &amp;#039;&amp;#039; then -- no class parameters defined, display as globally unassessed&lt;br /&gt;
						prefix = &amp;#039;H&amp;#039; -- hide quality class in project banner&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			elseif local_class == &amp;#039;&amp;#039; or local_class == article_class then -- local class matches article class or is blank&lt;br /&gt;
				prefix = &amp;#039;H&amp;#039; -- hide quality class in project banner&lt;br /&gt;
				class = article_class&lt;br /&gt;
			elseif (article_class == &amp;#039;NA&amp;#039;) and not isarticle(local_class) then -- article class and local class are both non-article classes&lt;br /&gt;
				prefix = &amp;#039;H&amp;#039;&lt;br /&gt;
			else -- article class exists and differs from local class&lt;br /&gt;
				prefix = &amp;#039;X&amp;#039; -- X will indicate to meta banner that classes are different, so trigger a tracking category&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return (args.noprefix and &amp;#039;&amp;#039; or prefix) .. class&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.quality = function(frame) -- used by WPBM to check global quality and compare with local parameter&lt;br /&gt;
	return p._quality(frame.args)&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>