<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3AWikiProjectBanner</id>
	<title>Module:WikiProjectBanner - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3AWikiProjectBanner"/>
	<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:WikiProjectBanner&amp;action=history"/>
	<updated>2026-04-22T12:46:06Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://stockhub.co/index.php?title=Module:WikiProjectBanner&amp;diff=147654&amp;oldid=prev</id>
		<title>imported&gt;Legoktm: Replace Module:No globals with require( &quot;strict&quot; )</title>
		<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:WikiProjectBanner&amp;diff=147654&amp;oldid=prev"/>
		<updated>2022-10-21T06:48:32Z</updated>

		<summary type="html">&lt;p&gt;Replace &lt;a href=&quot;/research/Module:No_globals&quot; title=&quot;Module:No globals&quot;&gt;Module:No globals&lt;/a&gt; with require( &amp;quot;strict&amp;quot; )&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-------------------------------------------------------------------------------&lt;br /&gt;
--                               WikiProjectBanner                           --&lt;br /&gt;
--                                                                           --&lt;br /&gt;
-- This module produces templates used by WikiProjects to track pages that   --&lt;br /&gt;
-- are within their scope.                                                   --&lt;br /&gt;
-------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- Load necessary modules.&lt;br /&gt;
require(&amp;#039;strict&amp;#039;)&lt;br /&gt;
local Banner = require(&amp;#039;Module:WikiProjectBanner/Banner&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p._main(bannerName, args, cfg)&lt;br /&gt;
	-- Entry point from Lua.&lt;br /&gt;
	cfg = cfg or mw.loadData(&amp;#039;Module:WikiProjectBanner/config&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
	-- Set a metatable allowing us to track unused arguments.&lt;br /&gt;
	local unusedArgs, argsProxy = {}, {}&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		unusedArgs[k] = true&lt;br /&gt;
	end&lt;br /&gt;
	setmetatable(argsProxy, {&lt;br /&gt;
		__index = function (t, key)&lt;br /&gt;
			unusedArgs[key] = nil&lt;br /&gt;
			local val = args[key]&lt;br /&gt;
			t[key] = val&lt;br /&gt;
			return val&lt;br /&gt;
		end,&lt;br /&gt;
		__pairs = function (t)&lt;br /&gt;
			for key, val in pairs(args) do&lt;br /&gt;
				unusedArgs[key] = nil&lt;br /&gt;
				t[key] = val&lt;br /&gt;
			end&lt;br /&gt;
			return next, t&lt;br /&gt;
		end,&lt;br /&gt;
		__ipairs = function (t)&lt;br /&gt;
			for i, val in ipairs(args) do&lt;br /&gt;
				unusedArgs[i] = nil&lt;br /&gt;
				t[i] = val&lt;br /&gt;
			end&lt;br /&gt;
			return function (t, i)&lt;br /&gt;
				i = i + 1&lt;br /&gt;
				local val = t[i]&lt;br /&gt;
				if val then&lt;br /&gt;
					return i, val&lt;br /&gt;
				end&lt;br /&gt;
			end, t, 0&lt;br /&gt;
		end&lt;br /&gt;
	})&lt;br /&gt;
&lt;br /&gt;
	local success, bannerObj = pcall(Banner.new, bannerName, argsProxy, cfg)&lt;br /&gt;
	if not success then&lt;br /&gt;
		return string.format(&lt;br /&gt;
			&amp;#039;&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;Error: %s&amp;lt;/strong&amp;gt;&amp;#039;,&lt;br /&gt;
			bannerObj -- This is the error message.&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local ret = tostring(bannerObj)&lt;br /&gt;
&lt;br /&gt;
	if next(unusedArgs) then&lt;br /&gt;
		ret = ret .. &amp;#039;[[Category:WikiProject banners with unused arguments]]&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	-- Entry point from wikitext.&lt;br /&gt;
&lt;br /&gt;
	-- Get the banner name.&lt;br /&gt;
	local parent = frame:getParent()&lt;br /&gt;
	local bannerName, isTemplate = parent:getTitle():gsub(&amp;#039;^Template:&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
	bannerName = bannerName:gsub(&amp;#039;/sandbox$&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
	isTemplate = isTemplate &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
	-- Get the arguments.&lt;br /&gt;
	local args = {}&lt;br /&gt;
	for k, v in pairs(parent.args) do&lt;br /&gt;
		v = v:match(&amp;#039;^%s*(.-)%s*$&amp;#039;) -- Trim whitespace.&lt;br /&gt;
		if v ~= &amp;#039;&amp;#039; then&lt;br /&gt;
			args[k] = v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Subst check.&lt;br /&gt;
	-- This must be done before any errors can be produced, otherwise the red&lt;br /&gt;
	-- &amp;quot;script error&amp;quot; text will be substituted instead of the template code.&lt;br /&gt;
	if mw.isSubsting() then&lt;br /&gt;
		local ret = {}&lt;br /&gt;
		ret[#ret + 1] = bannerName&lt;br /&gt;
		for k, v in pairs(args) do&lt;br /&gt;
			ret[#ret + 1] = k .. &amp;#039;=&amp;#039; .. v&lt;br /&gt;
		end&lt;br /&gt;
		return &amp;#039;{{&amp;#039; .. table.concat(ret, &amp;#039;|&amp;#039;) .. &amp;#039;}}&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Check we are being invoked from a template.&lt;br /&gt;
	if not isTemplate then&lt;br /&gt;
		error(&amp;#039;this module must be invoked from within a template&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return p._main(bannerName, args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;Legoktm</name></author>
	</entry>
</feed>