<?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%3AFb_overview%2Fsandbox</id>
	<title>Module:Fb overview/sandbox - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3AFb_overview%2Fsandbox"/>
	<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Fb_overview/sandbox&amp;action=history"/>
	<updated>2026-05-24T15:05:55Z</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:Fb_overview/sandbox&amp;diff=136152&amp;oldid=prev</id>
		<title>imported&gt;Izno: ok, either this module or the parent module assumes things that aren&#039;t true in the test case table</title>
		<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Fb_overview/sandbox&amp;diff=136152&amp;oldid=prev"/>
		<updated>2021-05-08T00:11:11Z</updated>

		<summary type="html">&lt;p&gt;ok, either this module or the parent module assumes things that aren&amp;#039;t true in the test case table&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- This implements {{fb overview}}&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Internationalisation&lt;br /&gt;
local trackingcat = &amp;#039;Category:Pages using sports overview with unknown parameters&amp;#039;&lt;br /&gt;
local labels = {&lt;br /&gt;
	competition = &amp;#039;Competition&amp;#039;,&lt;br /&gt;
	firstmatch = &amp;#039;First match&amp;#039;,&lt;br /&gt;
	lastmatch = &amp;#039;Last match&amp;#039;,&lt;br /&gt;
	startinground = &amp;#039;Starting round&amp;#039;,&lt;br /&gt;
	finalposition = &amp;#039;Final position&amp;#039;,&lt;br /&gt;
	record = &amp;#039;Record&amp;#039;,&lt;br /&gt;
	total = &amp;#039;Total&amp;#039;,&lt;br /&gt;
	source = &amp;#039;Source: &amp;#039;,&lt;br /&gt;
	lastupdated = &amp;#039;Last updated: &amp;#039;,&lt;br /&gt;
	sourcedefault = &amp;#039;[[#Competitions|Competitions]]&amp;#039;,&lt;br /&gt;
	unknownparameter = &amp;#039;Unknown parameter: &amp;#039;,&lt;br /&gt;
	pld = &amp;#039;&amp;lt;abbr title=&amp;quot;Games played&amp;quot;&amp;gt;Pld&amp;lt;/abbr&amp;gt;&amp;#039;,&lt;br /&gt;
	w = &amp;#039;&amp;lt;abbr title=&amp;quot;Games won&amp;quot;&amp;gt;W&amp;lt;/abbr&amp;gt;&amp;#039;,&lt;br /&gt;
	d = &amp;#039;&amp;lt;abbr title=&amp;quot;Games drawn&amp;quot;&amp;gt;D&amp;lt;/abbr&amp;gt;&amp;#039;,&lt;br /&gt;
	l = &amp;#039;&amp;lt;abbr title=&amp;quot;Games lost&amp;quot;&amp;gt;L&amp;lt;/abbr&amp;gt;&amp;#039;,&lt;br /&gt;
	pf = &amp;#039;&amp;lt;abbr title=&amp;quot;Points for&amp;quot;&amp;gt;PF&amp;lt;/abbr&amp;gt;&amp;#039;,&lt;br /&gt;
	pa = &amp;#039;&amp;lt;abbr title=&amp;quot;Points against&amp;quot;&amp;gt;PA&amp;lt;/abbr&amp;gt;&amp;#039;,&lt;br /&gt;
	pd = &amp;#039;&amp;lt;abbr title=&amp;quot;Point difference&amp;quot;&amp;gt;PD&amp;lt;/abbr&amp;gt;&amp;#039;,&lt;br /&gt;
	gf = &amp;#039;&amp;lt;abbr title=&amp;quot;Goals for&amp;quot;&amp;gt;GF&amp;lt;/abbr&amp;gt;&amp;#039;,&lt;br /&gt;
	ga = &amp;#039;&amp;lt;abbr title=&amp;quot;Goals against&amp;quot;&amp;gt;GA&amp;lt;/abbr&amp;gt;&amp;#039;,&lt;br /&gt;
	gd = &amp;#039;&amp;lt;abbr title=&amp;quot;Goal difference&amp;quot;&amp;gt;GD&amp;lt;/abbr&amp;gt;&amp;#039;,&lt;br /&gt;
	wp = &amp;#039;&amp;lt;abbr title=&amp;quot;Winning percentage&amp;quot;&amp;gt;Win %&amp;lt;/abbr&amp;gt;&amp;#039;,&lt;br /&gt;
	winner = &amp;#039;Winner&amp;#039;,&lt;br /&gt;
	runnerup = &amp;#039;Runner-up&amp;#039;,&lt;br /&gt;
	runnersup = &amp;#039;Runners-up&amp;#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Main function&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
&lt;br /&gt;
	-- Get the row numbers and check for invalid input&lt;br /&gt;
	local rownumbers = {}&lt;br /&gt;
	local unknown = {}&lt;br /&gt;
	local showdates, showrounds, showpos = false, false, false&lt;br /&gt;
	local maxrow = -1&lt;br /&gt;
	local rowlimit = 99&lt;br /&gt;
&lt;br /&gt;
	local function addrownumber(num, flag)&lt;br /&gt;
		if num &amp;lt;= rowlimit then&lt;br /&gt;
			table.insert(rownumbers, num)&lt;br /&gt;
			maxrow = (num &amp;gt; maxrow) and num or maxrow&lt;br /&gt;
			return true&lt;br /&gt;
		end&lt;br /&gt;
		return flag&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		k = tostring(k)&lt;br /&gt;
		local n = tonumber(k:match(&amp;#039;^[a-z]+(%d+)$&amp;#039;) or &amp;#039;-1&amp;#039;)&lt;br /&gt;
		if k == &amp;#039;u&amp;#039; or k == &amp;#039;c&amp;#039; or k == &amp;#039;s&amp;#039; or k == &amp;#039;pts&amp;#039; then&lt;br /&gt;
			-- These are valid&lt;br /&gt;
		elseif k:match(&amp;#039;^[cwdlfa]%d+$&amp;#039;) then&lt;br /&gt;
			local added = addrownumber(n, false)&lt;br /&gt;
		elseif k:match(&amp;#039;[dfl]m%d%d*$&amp;#039;) then&lt;br /&gt;
			showdates = addrownumber(n, showdates)&lt;br /&gt;
		elseif k:match(&amp;#039;sr%d%d*$&amp;#039;) then&lt;br /&gt;
			showrounds = addrownumber(n, showrounds)&lt;br /&gt;
		elseif k:match(&amp;#039;fp%d%d*$&amp;#039;) then&lt;br /&gt;
			showpos = addrownumber(n, showpos)&lt;br /&gt;
		else&lt;br /&gt;
			table.insert(unknown, k)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- Sort the row numbers&lt;br /&gt;
	table.sort(rownumbers)&lt;br /&gt;
&lt;br /&gt;
	-- Remove duplicates&lt;br /&gt;
	for i=#rownumbers,2,-1 do&lt;br /&gt;
		if rownumbers[i-1] == rownumbers[i] then&lt;br /&gt;
			table.remove(rownumbers,i)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local root = {}&lt;br /&gt;
	if maxrow &amp;gt; -1 then&lt;br /&gt;
		local WDL = require(&amp;#039;Module:WDL&amp;#039;).main&lt;br /&gt;
		-- Make the table&lt;br /&gt;
		table.insert(root,&amp;#039;{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&amp;#039;)&lt;br /&gt;
		-- Add the headers&lt;br /&gt;
		table.insert(root,&amp;#039;|-&amp;#039;)&lt;br /&gt;
		table.insert(root,&amp;#039;! rowspan=2 | &amp;#039; .. labels[&amp;#039;competition&amp;#039;])&lt;br /&gt;
		local totspan = 1&lt;br /&gt;
		if showdates then&lt;br /&gt;
			table.insert(root,&amp;#039;! rowspan=2 | &amp;#039; .. labels[&amp;#039;firstmatch&amp;#039;])&lt;br /&gt;
			table.insert(root,&amp;#039;! rowspan=2 | &amp;#039; .. labels[&amp;#039;lastmatch&amp;#039;])&lt;br /&gt;
			totspan = totspan + 2&lt;br /&gt;
		end&lt;br /&gt;
		if showrounds then&lt;br /&gt;
			table.insert(root,&amp;#039;! rowspan=2 | &amp;#039; .. labels[&amp;#039;startinground&amp;#039;])&lt;br /&gt;
			totspan = totspan + 1&lt;br /&gt;
		end&lt;br /&gt;
		if showpos then&lt;br /&gt;
			table.insert(root,&amp;#039;! rowspan=2 | &amp;#039; .. labels[&amp;#039;finalposition&amp;#039;])&lt;br /&gt;
			totspan = totspan + 1&lt;br /&gt;
		end&lt;br /&gt;
		table.insert(root,&amp;#039;! colspan=8 | &amp;#039; .. labels[&amp;#039;record&amp;#039;])&lt;br /&gt;
		table.insert(root,&amp;#039;|-&amp;#039;)&lt;br /&gt;
		table.insert(root,&amp;#039;! &amp;#039; .. labels[&amp;#039;pld&amp;#039;])&lt;br /&gt;
		table.insert(root,&amp;#039;! &amp;#039; .. labels[&amp;#039;w&amp;#039;])&lt;br /&gt;
		table.insert(root,&amp;#039;! &amp;#039; .. labels[&amp;#039;d&amp;#039;])&lt;br /&gt;
		table.insert(root,&amp;#039;! &amp;#039; .. labels[&amp;#039;l&amp;#039;])&lt;br /&gt;
		local pg = args.pts and args.pts == &amp;#039;y&amp;#039; and &amp;#039;p&amp;#039; or &amp;#039;g&amp;#039;&lt;br /&gt;
		table.insert(root,&amp;#039;! &amp;#039; .. labels[pg .. &amp;#039;f&amp;#039;])&lt;br /&gt;
		table.insert(root,&amp;#039;! &amp;#039; .. labels[pg .. &amp;#039;a&amp;#039;])&lt;br /&gt;
		table.insert(root,&amp;#039;! &amp;#039; .. labels[pg .. &amp;#039;d&amp;#039;])&lt;br /&gt;
		table.insert(root,&amp;#039;! &amp;#039; .. labels[&amp;#039;wp&amp;#039;])&lt;br /&gt;
		local evenodd = &amp;#039;odd&amp;#039;&lt;br /&gt;
&lt;br /&gt;
		-- Now add the rows&lt;br /&gt;
		local wtot, dtot, ltot, ftot, atot = 0, 0, 0, 0, 0&lt;br /&gt;
		for i=1,#rownumbers do&lt;br /&gt;
			local r = rownumbers[i]&lt;br /&gt;
			if evenodd == &amp;#039;even&amp;#039; then&lt;br /&gt;
				table.insert(root,&amp;#039;|- style=&amp;quot;background-color:#EEE&amp;quot;&amp;#039;)&lt;br /&gt;
				evenodd = &amp;#039;odd&amp;#039;&lt;br /&gt;
			else&lt;br /&gt;
				table.insert(root,&amp;#039;|-&amp;#039;)&lt;br /&gt;
				evenodd = &amp;#039;even&amp;#039;&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(root,&amp;#039;| &amp;#039; .. (args[&amp;#039;c&amp;#039; .. r] or &amp;#039;&amp;#039;))&lt;br /&gt;
			if showdates then&lt;br /&gt;
				if args[&amp;#039;dm&amp;#039; .. r] then&lt;br /&gt;
					table.insert(root,&amp;#039;| colspan=2 | &amp;#039; .. args[&amp;#039;dm&amp;#039; .. r])&lt;br /&gt;
				else&lt;br /&gt;
					table.insert(root,&amp;#039;| &amp;#039; .. (args[&amp;#039;fm&amp;#039; .. r] or &amp;#039;&amp;#039;))&lt;br /&gt;
					table.insert(root,&amp;#039;| &amp;#039; .. (args[&amp;#039;lm&amp;#039; .. r] or &amp;#039;&amp;#039;))&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			if showrounds then&lt;br /&gt;
			table.insert(root,&amp;#039;| &amp;#039; .. (args[&amp;#039;sr&amp;#039; .. r] or &amp;#039;&amp;#039;))&lt;br /&gt;
			end&lt;br /&gt;
			if showpos then&lt;br /&gt;
				local fp = args[&amp;#039;fp&amp;#039; .. r] or &amp;#039;&amp;#039;&lt;br /&gt;
				local bg =&lt;br /&gt;
					(fp:match(&amp;#039;^&amp;#039; .. labels[&amp;#039;winner&amp;#039;]) and &amp;#039;gold&amp;#039;) or&lt;br /&gt;
					(fp:match(&amp;#039;^&amp;#039; .. labels[&amp;#039;runnersup&amp;#039;]) and &amp;#039;silver&amp;#039;) or&lt;br /&gt;
					(fp:match(&amp;#039;^&amp;#039; .. labels[&amp;#039;runnerup&amp;#039;]) and &amp;#039;silver&amp;#039;) or nil&lt;br /&gt;
				if bg then&lt;br /&gt;
					table.insert(root,&amp;#039;| style=&amp;quot;background-color:&amp;#039; .. bg .. &amp;#039;&amp;quot; | &amp;#039; .. fp)&lt;br /&gt;
				else&lt;br /&gt;
					table.insert(root,&amp;#039;| &amp;#039; .. fp)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			wtot = wtot + (tonumber(args[&amp;#039;w&amp;#039; .. r]) or 0)&lt;br /&gt;
			dtot = dtot + (tonumber(args[&amp;#039;d&amp;#039; .. r]) or 0)&lt;br /&gt;
			ltot = ltot + (tonumber(args[&amp;#039;l&amp;#039; .. r]) or 0)&lt;br /&gt;
			ftot = ftot + (tonumber(args[&amp;#039;f&amp;#039; .. r]) or 0)&lt;br /&gt;
			atot = atot + (tonumber(args[&amp;#039;a&amp;#039; .. r]) or 0)&lt;br /&gt;
			table.insert(root, WDL(frame,&lt;br /&gt;
				{nil, args[&amp;#039;w&amp;#039; .. r],  args[&amp;#039;d&amp;#039; .. r],  args[&amp;#039;l&amp;#039; .. r],&lt;br /&gt;
				[&amp;#039;for&amp;#039;] = args[&amp;#039;f&amp;#039; .. r], [&amp;#039;against&amp;#039;] = args[&amp;#039;a&amp;#039; .. r], [&amp;#039;diff&amp;#039;] = &amp;#039;yes&amp;#039;})&lt;br /&gt;
			)&lt;br /&gt;
		end&lt;br /&gt;
		table.insert(root,&amp;#039;|-&amp;#039;)&lt;br /&gt;
		if totspan &amp;gt; 1 then&lt;br /&gt;
			table.insert(root,&amp;#039;! colspan=&amp;#039; .. totspan .. &amp;#039; | &amp;#039; .. labels[&amp;#039;total&amp;#039;])&lt;br /&gt;
		else&lt;br /&gt;
			table.insert(root,&amp;#039;! &amp;#039; .. labels[&amp;#039;total&amp;#039;])&lt;br /&gt;
		end&lt;br /&gt;
		table.insert(root, WDL(frame,&lt;br /&gt;
				{wtot+dtot+ltot, wtot, dtot, ltot, [&amp;#039;total&amp;#039;] = &amp;#039;y&amp;#039;,&lt;br /&gt;
				[&amp;#039;for&amp;#039;] = ftot, [&amp;#039;against&amp;#039;] = atot, [&amp;#039;diff&amp;#039;] = &amp;#039;yes&amp;#039;})&lt;br /&gt;
			)&lt;br /&gt;
		table.insert(root, &amp;#039;|} \n&amp;lt;div style=&amp;quot;font-size: 90%; margin-bottom: 0.5em;&amp;quot;&amp;gt;\n&amp;#039;)&lt;br /&gt;
		if args.u then&lt;br /&gt;
			table.insert(root, labels[&amp;#039;lastupdated&amp;#039;] .. args.u .. &amp;#039;&amp;lt;br&amp;gt;&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
		table.insert(root, labels[&amp;#039;source&amp;#039;] .. (args.s or labels[&amp;#039;sourcedefault&amp;#039;]) .. &amp;#039;\n&amp;lt;/div&amp;gt;&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if #unknown &amp;gt; 0 then&lt;br /&gt;
		&lt;br /&gt;
		local html = require(&amp;#039;Module:If preview&amp;#039;)._warning({&lt;br /&gt;
			labels[&amp;#039;unknownparameter&amp;#039;] ..&lt;br /&gt;
			&amp;#039;&amp;lt;code&amp;gt;&amp;#039; ..&lt;br /&gt;
			table.concat(unknown, &amp;#039;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;#039;) ..&lt;br /&gt;
			&amp;#039;&amp;lt;/code&amp;gt;.&amp;#039;&lt;br /&gt;
		}) .. &amp;#039;[[&amp;#039; .. trackingcat .. &amp;#039;|&amp;#039; .. unknown[1] .. &amp;#039; ]]&amp;#039;&lt;br /&gt;
		&lt;br /&gt;
		table.insert(root, html)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return table.concat(root, &amp;#039;\n&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;Izno</name></author>
	</entry>
</feed>