<?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%3ASports_results</id>
	<title>Module:Sports results - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3ASports_results"/>
	<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sports_results&amp;action=history"/>
	<updated>2026-04-21T11:52:08Z</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:Sports_results&amp;diff=146942&amp;oldid=prev</id>
		<title>imported&gt;Plastikspork: Add support for Template:FlagIOC with |short_style=flag</title>
		<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sports_results&amp;diff=146942&amp;oldid=prev"/>
		<updated>2022-11-19T15:27:24Z</updated>

		<summary type="html">&lt;p&gt;Add support for &lt;a href=&quot;/index.php?title=Template:FlagIOC&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Template:FlagIOC (page does not exist)&quot;&gt;Template:FlagIOC&lt;/a&gt; with |short_style=flag&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- Module to build results cross-tables for standings in Sports&lt;br /&gt;
-- See documentation for details&lt;br /&gt;
&lt;br /&gt;
require(&amp;#039;strict&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Main function&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	-- Get the args, stripping out blank values&lt;br /&gt;
	local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
	local Args = getArgs(frame, {parentFirst = true})&lt;br /&gt;
&lt;br /&gt;
	-- Exit early if we are using section transclusion for a different section&lt;br /&gt;
	if (Args[&amp;#039;transcludesection&amp;#039;] and Args[&amp;#039;section&amp;#039;])&lt;br /&gt;
		and Args[&amp;#039;transcludesection&amp;#039;] ~= Args[&amp;#039;section&amp;#039;] then&lt;br /&gt;
		return &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Declare locals&lt;br /&gt;
	local t = {}&lt;br /&gt;
	local t_footer = {}&lt;br /&gt;
	local t_return = {}&lt;br /&gt;
	local team_list = {}&lt;br /&gt;
	local notes_exist = false&lt;br /&gt;
	local ii, ii_fw, bg_col, team_name, team_code_ii, ii_start, ii_end&lt;br /&gt;
	-- Optional custom team header&lt;br /&gt;
	local team_header = Args[&amp;#039;team_header&amp;#039;] or &amp;#039;Home \\ Away&amp;#039;&lt;br /&gt;
	-- Number of legs&lt;br /&gt;
	local legs = tonumber(Args[&amp;#039;legs&amp;#039;]) or 1&lt;br /&gt;
	local multirowlegs = (Args[&amp;#039;multirowlegs&amp;#039;] or &amp;#039;no&amp;#039;) ~= &amp;#039;no&amp;#039;&lt;br /&gt;
&lt;br /&gt;
	-- Edit links if requested&lt;br /&gt;
	local baselink = frame:getParent():getTitle()&lt;br /&gt;
	if mw.title.getCurrentTitle().text == baselink then	baselink = &amp;#039;&amp;#039; end&lt;br /&gt;
	local template_name = Args[&amp;#039;template_name&amp;#039;]&lt;br /&gt;
		or (baselink ~= &amp;#039;&amp;#039; and (&amp;#039;:&amp;#039; .. baselink))&lt;br /&gt;
		or &amp;#039;&amp;#039;&lt;br /&gt;
	local edit_links = template_name == &amp;#039;&amp;#039; and &amp;#039;&amp;#039;&lt;br /&gt;
		or require(&amp;#039;Module:Navbar&amp;#039;)._navbar({&lt;br /&gt;
			template_name,&lt;br /&gt;
			mini=1,&lt;br /&gt;
			style=&amp;#039;float:right&amp;#039;&lt;br /&gt;
		})&lt;br /&gt;
&lt;br /&gt;
	-- Get the custom start point for the table (most will start by default at 1)&lt;br /&gt;
	local top_pos = tonumber(Args[&amp;#039;highest_pos&amp;#039;]) or 1&lt;br /&gt;
	-- Get the custom end point for the table (unrestricted if bottom_pos is &amp;lt; top_pos)&lt;br /&gt;
	local bottom_pos = tonumber(Args[&amp;#039;lowest_pos&amp;#039;]) or 0&lt;br /&gt;
	local N_teams = top_pos - 1 -- Default to 0 at start, but higher number needed to skip certain entries&lt;br /&gt;
&lt;br /&gt;
	-- Load some other modules&lt;br /&gt;
	local p_sub = require(&amp;#039;Module:Sports table/sub&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
	-- Alternative syntax for team list&lt;br /&gt;
	if Args[&amp;#039;team_order&amp;#039;] and Args[&amp;#039;team_order&amp;#039;] ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		local tlist = mw.text.split(Args[&amp;#039;team_order&amp;#039;], &amp;#039;%s*[;,]%s*&amp;#039;)&lt;br /&gt;
		for k, tname in ipairs(tlist) do&lt;br /&gt;
			if tname ~= &amp;#039;&amp;#039; then&lt;br /&gt;
				Args[&amp;#039;team&amp;#039; .. k] = tname&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if Args[&amp;#039;team_header_note&amp;#039;] then&lt;br /&gt;
		notes_exist=true&lt;br /&gt;
		local note_string = frame:expandTemplate{ title = &amp;#039;efn&amp;#039;,&lt;br /&gt;
			args = { group=&amp;#039;lower-alpha&amp;#039;, Args[&amp;#039;team_header_note&amp;#039;]} }&lt;br /&gt;
		team_header = team_header .. note_string&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Read in number of consecutive teams (ignore entries after skipping a spot)&lt;br /&gt;
	ii_start = N_teams&lt;br /&gt;
	while Args[&amp;#039;team&amp;#039;..N_teams+1] ~= nil and (bottom_pos &amp;lt; top_pos or N_teams &amp;lt; bottom_pos) do&lt;br /&gt;
		N_teams = N_teams+1&lt;br /&gt;
		-- Sneakily add it twice to the team_list parameter, once for the actual&lt;br /&gt;
		-- ranking, the second for position lookup in sub-tables&lt;br /&gt;
		-- This is possible because Lua allows both numbers and strings as indices.&lt;br /&gt;
		team_list[N_teams] = Args[&amp;#039;team&amp;#039;..N_teams] -- i^th entry is team X&lt;br /&gt;
		team_list[Args[&amp;#039;team&amp;#039;..N_teams]] = N_teams -- team X entry is position i&lt;br /&gt;
	end&lt;br /&gt;
	ii_end = N_teams&lt;br /&gt;
	-- Get team to show&lt;br /&gt;
	local ii_show = team_list[Args[&amp;#039;showteam&amp;#039;]] -- nil if non-existant&lt;br /&gt;
&lt;br /&gt;
	-- Set the font size&lt;br /&gt;
	local font_size=Args[&amp;#039;font_size&amp;#039;] or &amp;#039;100%&amp;#039;&lt;br /&gt;
&lt;br /&gt;
	-- Create header&lt;br /&gt;
	-- Open table&lt;br /&gt;
	table.insert(t,&amp;#039;{|class=&amp;quot;wikitable plainrowheaders&amp;quot; style=&amp;quot;text-align:center;font-size:&amp;#039;..font_size..&amp;#039;;&amp;quot;\n&amp;#039;)&lt;br /&gt;
	-- Table title&lt;br /&gt;
	if Args[&amp;#039;title&amp;#039;] then&lt;br /&gt;
		table.insert(t,&amp;#039;|+ &amp;#039; .. Args[&amp;#039;title&amp;#039;] .. &amp;#039;\n&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	-- First column&lt;br /&gt;
	t_return.count = 0 			-- Dummy parameter, using subfunction call seems best at this point because both module are intertwined&lt;br /&gt;
	t_return.tab_text = t		-- Actual text&lt;br /&gt;
	t_return = p_sub.colhead(t_return,&amp;#039;auto&amp;#039;, edit_links .. &amp;#039; &amp;#039; .. team_header)&lt;br /&gt;
	-- Other columns passed to subfunction&lt;br /&gt;
	t_return = p.header(t_return,Args,p_sub,N_teams,team_list,legs,multirowlegs)&lt;br /&gt;
	t = t_return.tab_text&lt;br /&gt;
&lt;br /&gt;
	-- Random value used for uniqueness&lt;br /&gt;
	math.randomseed( os.clock() * 10^8 )&lt;br /&gt;
	local rand_val = math.random()&lt;br /&gt;
&lt;br /&gt;
	local note_string, note_id&lt;br /&gt;
	local note_id_list = {}&lt;br /&gt;
&lt;br /&gt;
	-- Now create individual rows&lt;br /&gt;
	ii_start = tonumber(Args[&amp;#039;highest_row&amp;#039;]) and (tonumber(Args[&amp;#039;highest_row&amp;#039;]) &amp;gt; top_pos) and tonumber(Args[&amp;#039;highest_row&amp;#039;]) or top_pos&lt;br /&gt;
	ii_end = tonumber(Args[&amp;#039;lowest_row&amp;#039;]) and (tonumber(Args[&amp;#039;lowest_row&amp;#039;]) &amp;lt; N_teams) and tonumber(Args[&amp;#039;lowest_row&amp;#039;]) or N_teams&lt;br /&gt;
	for ii=ii_start,ii_end do&lt;br /&gt;
		-- Get team info&lt;br /&gt;
		team_code_ii = team_list[ii]&lt;br /&gt;
		team_name = Args[&amp;#039;name_&amp;#039;..team_code_ii] or team_code_ii&lt;br /&gt;
		local ii_style = &amp;#039;text-align:&amp;#039; .. (Args[&amp;#039;team_align&amp;#039;] or &amp;#039;right&amp;#039;) .. &amp;#039;;&amp;#039;&lt;br /&gt;
			.. (ii and ii == ii_show and &amp;#039;font-weight:bold;&amp;#039; or &amp;#039;&amp;#039;)&lt;br /&gt;
			.. (Args[&amp;#039;team_nowrap&amp;#039;] and &amp;#039;white-space:nowrap;&amp;#039; or &amp;#039;&amp;#039;)&lt;br /&gt;
		local team_note = Args[&amp;#039;note_&amp;#039;..team_code_ii]&lt;br /&gt;
		if team_note then&lt;br /&gt;
			notes_exist = true&lt;br /&gt;
			-- Only when it exist&lt;br /&gt;
			-- First check for existence of reference for note&lt;br /&gt;
			if not Args[&amp;#039;note_&amp;#039;..team_note] then&lt;br /&gt;
				-- It&amp;#039;s the entry&lt;br /&gt;
				-- Add random end for unique ID if more tables are present on article (which might otherwise share an ID)&lt;br /&gt;
				note_id = &amp;#039;&amp;quot;table_note_&amp;#039;..team_code_ii..rand_val..&amp;#039;&amp;quot;&amp;#039;&lt;br /&gt;
				note_id_list[team_code_ii] = note_id&lt;br /&gt;
				note_string = frame:expandTemplate{ title = &amp;#039;efn&amp;#039;,&lt;br /&gt;
					args = { group=&amp;#039;lower-alpha&amp;#039;, name=note_id,  team_note} }&lt;br /&gt;
			else&lt;br /&gt;
				-- Check for existence elsewhere&lt;br /&gt;
				local note_local_num = team_list[team_note] or ii_end + 1&lt;br /&gt;
				if note_id_list[team_note] or ((note_local_num &amp;gt;= ii_start) and (note_local_num &amp;lt;= ii_end)) then&lt;br /&gt;
					-- It exists&lt;br /&gt;
					note_id = &amp;#039;&amp;quot;table_note_&amp;#039;..team_note..rand_val..&amp;#039;&amp;quot;&amp;#039; -- Identifier&lt;br /&gt;
					note_string = frame:extensionTag{ name = &amp;#039;ref&amp;#039;,&lt;br /&gt;
						args = { group = &amp;#039;lower-alpha&amp;#039;, name = note_id} }&lt;br /&gt;
				else&lt;br /&gt;
					-- Now define the identifier for this&lt;br /&gt;
					-- Add random end for unique ID&lt;br /&gt;
					note_id = &amp;#039;&amp;quot;table_note_&amp;#039;..team_note..rand_val..&amp;#039;&amp;quot;&amp;#039;&lt;br /&gt;
					note_id_list[team_note] = note_id&lt;br /&gt;
					note_string = frame:expandTemplate{ title = &amp;#039;efn&amp;#039;,&lt;br /&gt;
						args = { group=&amp;#039;lower-alpha&amp;#039;, name=note_id, Args[&amp;#039;note_&amp;#039;..team_note]} }&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			-- Now append this to the team_name string&lt;br /&gt;
			team_name = team_name..note_string&lt;br /&gt;
		end&lt;br /&gt;
		-- Team names&lt;br /&gt;
		table.insert(t,&amp;#039;|- \n&amp;#039;)  -- New row&lt;br /&gt;
		table.insert(t,&amp;#039;! scope=&amp;quot;row&amp;quot;&amp;#039;.. (multirowlegs and &amp;#039; rowspan=&amp;#039; .. legs or &amp;#039;&amp;#039;) &lt;br /&gt;
			.. &amp;#039;style=&amp;quot;&amp;#039;.. ii_style ..&amp;#039;&amp;quot;| &amp;#039;..team_name..&amp;#039;\n&amp;#039;)  -- Position number&lt;br /&gt;
&lt;br /&gt;
		-- Now include note to match results if needed&lt;br /&gt;
		for jj=top_pos,N_teams do&lt;br /&gt;
			local team_code_jj = team_list[jj]&lt;br /&gt;
			if ii == jj then&lt;br /&gt;
				-- Nothing&lt;br /&gt;
			else&lt;br /&gt;
				for l=1,legs do&lt;br /&gt;
					local m = (legs == 1) and &amp;#039;match_&amp;#039; or &amp;#039;match&amp;#039; .. l .. &amp;#039;_&amp;#039;&lt;br /&gt;
					local match_note = Args[m ..team_code_ii..&amp;#039;_&amp;#039;..team_code_jj..&amp;#039;_note&amp;#039;]&lt;br /&gt;
					if match_note then&lt;br /&gt;
						notes_exist = true&lt;br /&gt;
						-- Only when it exist&lt;br /&gt;
						-- First check for existence of reference for note&lt;br /&gt;
						if not (Args[&amp;#039;note_&amp;#039;..match_note] or Args[m ..match_note..&amp;#039;_note&amp;#039;]) then&lt;br /&gt;
							-- It&amp;#039;s the entry&lt;br /&gt;
							-- Add random end for unique ID if more tables are present on article (which might otherwise share an ID)&lt;br /&gt;
							note_id = &amp;#039;&amp;quot;table_note_&amp;#039;..l..&amp;quot;_&amp;quot;..team_code_ii..&amp;#039;_&amp;#039;..team_code_jj..rand_val..&amp;#039;&amp;quot;&amp;#039;&lt;br /&gt;
							note_id_list[team_code_ii..&amp;#039;_&amp;#039;..team_code_jj] = note_id&lt;br /&gt;
							note_string = frame:expandTemplate{ title = &amp;#039;efn&amp;#039;,&lt;br /&gt;
								args = { group=&amp;#039;lower-alpha&amp;#039;, name=note_id,  match_note} }&lt;br /&gt;
						else&lt;br /&gt;
							-- Check for existence elsewhere&lt;br /&gt;
							local note_local_num = team_list[match_note] or ii_end + 1&lt;br /&gt;
							if note_id_list[match_note] then&lt;br /&gt;
								-- Referencing an existing note&lt;br /&gt;
								note_id = note_id_list[match_note] -- Borrow the existing identifier&lt;br /&gt;
								note_string = frame:extensionTag{ name = &amp;#039;ref&amp;#039;,&lt;br /&gt;
									args = { group = &amp;#039;lower-alpha&amp;#039;, name = note_id} }&lt;br /&gt;
							elseif (note_local_num &amp;gt;= ii_start) and (note_local_num &amp;lt;= ii_end) then&lt;br /&gt;
								-- Referencing a player note from a match note. In this case, we remove the leg part&lt;br /&gt;
								note_id = &amp;#039;&amp;quot;table_note_&amp;#039;..match_note..rand_val..&amp;#039;&amp;quot;&amp;#039;&lt;br /&gt;
								note_string = frame:extensionTag{ name = &amp;#039;ref&amp;#039;,&lt;br /&gt;
									args = { group = &amp;#039;lower-alpha&amp;#039;, name = note_id} }&lt;br /&gt;
							else&lt;br /&gt;
								-- Referencing a different match note before its defined with its content&lt;br /&gt;
								note_id = &amp;#039;&amp;quot;table_note_&amp;#039;..l..&amp;quot;_&amp;quot;..match_note..rand_val..&amp;#039;&amp;quot;&amp;#039;&lt;br /&gt;
								note_id_list[match_note] = note_id&lt;br /&gt;
								note_string = frame:expandTemplate{ title = &amp;#039;efn&amp;#039;,&lt;br /&gt;
									args = { group=&amp;#039;lower-alpha&amp;#039;, name=note_id, Args[&amp;#039;note_&amp;#039;..match_note]} }&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
						-- Now append this to the match result string&lt;br /&gt;
						Args[m..team_code_ii..&amp;#039;_&amp;#039;..team_code_jj] = (Args[m..team_code_ii..&amp;#039;_&amp;#039;..team_code_jj] or &amp;#039;–&amp;#039;)..note_string&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		-- Then individual results&lt;br /&gt;
		t = p.row(t,Args,N_teams,team_list,ii,ii_show,legs,multirowlegs)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Close table&lt;br /&gt;
	table.insert(t, &amp;#039;|}\n&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
	-- Get info for footer&lt;br /&gt;
	local update = Args[&amp;#039;update&amp;#039;]&lt;br /&gt;
		or &amp;#039;unknown&amp;#039;&lt;br /&gt;
	local start_date = Args[&amp;#039;start_date&amp;#039;]&lt;br /&gt;
		or &amp;#039;unknown&amp;#039;&lt;br /&gt;
	local source = Args[&amp;#039;source&amp;#039;]&lt;br /&gt;
		or frame:expandTemplate{ title = &amp;#039;citation needed&amp;#039;,&lt;br /&gt;
			args = { reason=&amp;#039;No source parameter defined&amp;#039;, date=os.date(&amp;#039;%B %Y&amp;#039;) } }&lt;br /&gt;
&lt;br /&gt;
	-- Create footer text&lt;br /&gt;
	-- Date updating&lt;br /&gt;
	if string.lower(update)==&amp;#039;complete&amp;#039; then&lt;br /&gt;
		-- Do nothing&lt;br /&gt;
	elseif update==&amp;#039;&amp;#039; then&lt;br /&gt;
		-- Empty parameter&lt;br /&gt;
		table.insert(t_footer,&amp;#039;Updated to match(es) played on unknown. &amp;#039;)&lt;br /&gt;
	elseif string.lower(update)==&amp;#039;future&amp;#039; then&lt;br /&gt;
		-- Future start date&lt;br /&gt;
		table.insert(t_footer,&amp;#039;First match(es) will be played on &amp;#039;..start_date..&amp;#039;. &amp;#039;)&lt;br /&gt;
	else&lt;br /&gt;
		table.insert(t_footer,&amp;#039;Updated to match(es) played on &amp;#039;..update..&amp;#039;. &amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	table.insert(t_footer,&amp;#039;Source: &amp;#039;..source)&lt;br /&gt;
	if (Args[&amp;#039;matches_style&amp;#039;] or &amp;#039;&amp;#039;) == &amp;#039;FBR&amp;#039; then&lt;br /&gt;
		table.insert(t_footer, Args[&amp;#039;team_header&amp;#039;]&lt;br /&gt;
			and &amp;#039;&amp;lt;br /&amp;gt;Legend: Blue = left column team win; Yellow = draw; Red = top row team win.&amp;#039;&lt;br /&gt;
			or &amp;#039;&amp;lt;br /&amp;gt;Legend: Blue = home team win; Yellow = draw; Red = away team win.&amp;#039;)&lt;br /&gt;
	elseif (Args[&amp;#039;matches_style&amp;#039;] or &amp;#039;&amp;#039;) == &amp;#039;BSR&amp;#039; then&lt;br /&gt;
		table.insert(t_footer, Args[&amp;#039;team_header&amp;#039;]&lt;br /&gt;
			and &amp;#039;&amp;lt;br /&amp;gt;Legend: Blue = left column team win; Red = top row team win.&amp;#039;&lt;br /&gt;
			or &amp;#039;&amp;lt;br /&amp;gt;Legend: Blue = home team win; Red = away team win.&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	if Args[&amp;#039;a_note&amp;#039;] then&lt;br /&gt;
		table.insert(t_footer, &amp;#039;&amp;lt;br /&amp;gt;For upcoming matches, an &amp;quot;a&amp;quot; indicates there is an article about the rivalry between the two participants.&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	if Args[&amp;#039;ot_note&amp;#039;] then&lt;br /&gt;
		table.insert(t_footer, &amp;#039;&amp;lt;br /&amp;gt;Matches with lighter background shading were decided after overtime.&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local templatestyles = frame:extensionTag{&lt;br /&gt;
		name = &amp;#039;templatestyles&amp;#039;, args = { src = &amp;#039;Module:Sports results/styles.css&amp;#039; }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	-- Add notes (if applicable)&lt;br /&gt;
	if notes_exist then&lt;br /&gt;
		table.insert(t_footer,&amp;#039;&amp;lt;br&amp;gt;Notes:&amp;#039;)&lt;br /&gt;
		t_footer = templatestyles .. &amp;#039;&amp;lt;div class=&amp;quot;sports-results-notes&amp;quot;&amp;gt;&amp;#039;..table.concat(t_footer)..&amp;#039;&amp;lt;/div&amp;gt;&amp;#039;&lt;br /&gt;
		t_footer = t_footer..frame:expandTemplate{ title = &amp;#039;notelist&amp;#039;, args = { group=&amp;#039;lower-alpha&amp;#039;} }&lt;br /&gt;
	else&lt;br /&gt;
		t_footer = templatestyles .. &amp;#039;&amp;lt;div class=&amp;quot;sports-results-notes&amp;quot;&amp;gt;&amp;#039;..table.concat(t_footer)..&amp;#039;&amp;lt;/div&amp;gt;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add footer to main text table&lt;br /&gt;
	table.insert(t,t_footer)&lt;br /&gt;
&lt;br /&gt;
	-- Rewrite anchor links&lt;br /&gt;
	for k=1,#t do&lt;br /&gt;
		if t[k]:match(&amp;#039;%[%[#[^%[%]]*%|&amp;#039;) then&lt;br /&gt;
			t[k] = mw.ustring.gsub(t[k], &amp;#039;(%[%[)(#[^%[%]]*%|)&amp;#039;, &amp;#039;%1&amp;#039; .. baselink .. &amp;#039;%2&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return &amp;#039;&amp;lt;div style=&amp;quot;overflow:hidden&amp;quot;&amp;gt;&amp;#039;&lt;br /&gt;
		.. &amp;#039;&amp;lt;div class=&amp;quot;noresize overflowbugx&amp;quot; style=&amp;quot;overflow:auto&amp;quot;&amp;gt;\n&amp;#039;&lt;br /&gt;
		.. table.concat(t) .. &amp;#039;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Other functions&lt;br /&gt;
local function get_short_name(s, t, n, ss)&lt;br /&gt;
	-- return short name if defined&lt;br /&gt;
	if s and s ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		return s&lt;br /&gt;
	end&lt;br /&gt;
	-- deflag if necessary&lt;br /&gt;
	if ss and n then&lt;br /&gt;
		if ss == &amp;#039;noflag&amp;#039; then&lt;br /&gt;
			n = mw.ustring.gsub(n, &amp;#039;%[%[[Ff][Ii][Ll][Ee]:[^%[%]]*%]%]&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
			n = mw.ustring.gsub(n, &amp;#039;^%s*&amp;amp;nbsp;%s*&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
		elseif ss == &amp;#039;flag&amp;#039; then&lt;br /&gt;
			n = mw.ustring.gsub(n, &amp;#039;(&amp;lt;span class=&amp;quot;flagicon&amp;quot;&amp;gt;%s*%[%[[Ff][Ii][Ll][Ee]:[^%[%]]*link=)[^%|%[%]]*(%]%][^&amp;lt;&amp;gt;]*&amp;lt;/span&amp;gt;)%s*%[%[([^%[%]%|]*)%|[^%[%]]*%]%]&amp;#039;, &amp;#039;%1%3%2&amp;#039;)&lt;br /&gt;
			n = mw.ustring.gsub(n, &amp;#039;(%[%[[Ff][Ii][Ll][Ee]:[^%[%]]*link=)[^%|%[%]]*(%]%])%s*&amp;amp;nbsp;%s*%[%[([^%[%]%|]*)%|[^%[%]]*%]%]&amp;#039;, &amp;#039;%1%3%2&amp;#039;)&lt;br /&gt;
			n = mw.ustring.gsub(n, &amp;#039;(%[%[[Ff][Ii][Ll][Ee]:[^%[%]]*link=)[^%|%[%]]*(%]%])%s*%[%[([^%[%]%|]*)%|[^%[%]]*%]%]&amp;#039;, &amp;#039;%1%3%2&amp;#039;)&lt;br /&gt;
			n = mw.ustring.gsub(n, &amp;#039;.*(&amp;lt;span class=&amp;quot;flagicon&amp;quot;&amp;gt;%s*%[%[[Ff][Ii][Ll][Ee]:[^%[%]]*%]%][^&amp;lt;&amp;gt;]*&amp;lt;/span&amp;gt;).*&amp;#039;, &amp;#039;%1&amp;#039;)&lt;br /&gt;
			n = mw.ustring.gsub(n, &amp;#039;.*(%[%[[Ff][Ii][Ll][Ee]:[^%[%]]*%]%]).*&amp;#039;, &amp;#039;%1&amp;#039;)&lt;br /&gt;
			n = mw.ustring.gsub(n, &amp;#039;&amp;amp;nbsp;(&amp;lt;/span&amp;gt;)&amp;#039;, &amp;#039;%1&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- replace link text in name with team abbr if possible&lt;br /&gt;
	if n and t and n:match(&amp;#039;(%[%[[^%[%]]*%]%])&amp;#039;) then&lt;br /&gt;
		n = mw.ustring.gsub(n, &amp;#039;(%[%[[^%|%]]*%|)[^%|%]]*(%]%])&amp;#039;, &amp;#039;%1&amp;#039; .. t .. &amp;#039;%2&amp;#039;)&lt;br /&gt;
		n = mw.ustring.gsub(n, &amp;#039;(%[%[[^%|%]]*)(%]%])&amp;#039;, &amp;#039;%1|&amp;#039; .. t .. &amp;#039;%2&amp;#039;)&lt;br /&gt;
		n = mw.ustring.gsub(n, &amp;#039;(%[%[[^%|%]]*%|)([A-Z][A-Z][A-Z])(%]%])&amp;amp;nbsp;&amp;lt;span[^&amp;lt;&amp;gt;]*&amp;gt;%([A-Z][A-Z][A-Z]%)&amp;lt;/span&amp;gt;&amp;#039;, &amp;#039;%1%2%3&amp;#039;)&lt;br /&gt;
		return n&lt;br /&gt;
	end&lt;br /&gt;
	-- nothing worked, so just return the unlinked team abbr&lt;br /&gt;
	return t or &amp;#039;&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function get_score_background(s, c)&lt;br /&gt;
	local s1, s2&lt;br /&gt;
	-- Define the colouring&lt;br /&gt;
	local wc, lc, tc&lt;br /&gt;
	if c == &amp;#039;level2&amp;#039; then&lt;br /&gt;
	wc, lc, tc = &amp;#039;#CCF9FF&amp;#039;, &amp;#039;#FCC&amp;#039;, &amp;#039;#FFC&amp;#039; -- blue2, red2, yellow2&lt;br /&gt;
	elseif c == &amp;#039;level3&amp;#039; then&lt;br /&gt;
	wc, lc, tc = &amp;#039;#DDFCFF&amp;#039;, &amp;#039;#FDD&amp;#039;, &amp;#039;#FFD&amp;#039; -- blue3, red3, yellow3&lt;br /&gt;
	elseif c == &amp;#039;level4&amp;#039; then&lt;br /&gt;
	wc, lc, tc = &amp;#039;#EEFFFF&amp;#039;, &amp;#039;#FEE&amp;#039;, &amp;#039;#FFE&amp;#039; -- blue4, red4, yellow4&lt;br /&gt;
	else&lt;br /&gt;
	wc, lc, tc = &amp;#039;#BBF3FF&amp;#039;, &amp;#039;#FBB&amp;#039;, &amp;#039;#FFB&amp;#039; -- blue1, red1, yellow1&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- check for override&lt;br /&gt;
	if s:match(&amp;#039;^%s*&amp;lt;span%s%s*style%s*=[&amp;quot;\&amp;#039;%s]*background[%-colr]*%s*:([^\&amp;#039;&amp;quot;;&amp;lt;&amp;gt;]*).-$&amp;#039;) then&lt;br /&gt;
		local c = mw.ustring.gsub(s,&amp;#039;^%s*&amp;lt;span%s%s*style%s*=[&amp;quot;\&amp;#039;%s]*background[%-colr]*%s*:([^\&amp;#039;&amp;quot;;&amp;lt;&amp;gt;]*).-$&amp;#039;, &amp;#039;%1&amp;#039;)&lt;br /&gt;
		return c&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- delink if necessary&lt;br /&gt;
	if s:match(&amp;#039;^%s*%[%[[^%[%]]*%|([^%[%]]*)%]%]&amp;#039;) then&lt;br /&gt;
		s = s:match(&amp;#039;^%s*%[%[[^%[%]]*%|([^%[%]]*)%]%]&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	if s:match(&amp;#039;^%s*%[[^%[%]%s]*%s([^%[%]]*)%]&amp;#039;) then&lt;br /&gt;
		s = s:match(&amp;#039;^%s*%[[^%[%]%s]*%s([^%[%]]*)%]&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	if s:match(&amp;#039;&amp;lt;span[^&amp;lt;&amp;gt;]*&amp;gt;(.-)&amp;lt;/span&amp;gt;&amp;#039;) then&lt;br /&gt;
		s = s:match(&amp;#039;&amp;lt;span[^&amp;lt;&amp;gt;]*&amp;gt;(.-)&amp;lt;/span&amp;gt;&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- get the scores&lt;br /&gt;
	s1 = tonumber(mw.ustring.gsub( s or &amp;#039;&amp;#039;,&lt;br /&gt;
		&amp;#039;^%s*([%d%.][%d%.]*)%s*–%s*([%d%.][%d%.]*).*&amp;#039;, &amp;#039;%1&amp;#039; ) or &amp;#039;&amp;#039;) or &amp;#039;&amp;#039;&lt;br /&gt;
	s2 = tonumber(mw.ustring.gsub( s or &amp;#039;&amp;#039;,&lt;br /&gt;
		&amp;#039;^%s*([%d%.][%d%.]*)%s*–%s*([%d%.][%d%.]*).*&amp;#039;, &amp;#039;%2&amp;#039; ) or &amp;#039;&amp;#039;) or &amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
	-- return colouring if possible&lt;br /&gt;
	if s1 ~= &amp;#039;&amp;#039; and s2 ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		return (s1 &amp;gt; s2) and wc or ((s2 &amp;gt; s1) and lc or tc)&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;#039;transparent&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function format_score(s)&lt;br /&gt;
	s = mw.ustring.gsub(s or &amp;#039;&amp;#039;, &amp;#039;^%s*([%d%.]+)%s*[–−—%-]%s*([%d%.]+)&amp;#039;, &amp;#039;%1–%2&amp;#039;)&lt;br /&gt;
	s = mw.ustring.gsub(s, &amp;#039;^%s*([%d%.]+)%s*&amp;amp;[MmNn][Dd][Aa][Ss][Hh];%s*([%d%.]+)&amp;#039;, &amp;#039;%1–%2&amp;#039;)&lt;br /&gt;
	s = mw.ustring.gsub(s, &amp;#039;^%s*(%[%[[^%[%]]*%|[%d%.]+)%s*%-%s*([%d%.]+)&amp;#039;, &amp;#039;%1–%2&amp;#039;)&lt;br /&gt;
	s = mw.ustring.gsub(s, &amp;#039;^%s*(%[[^%[%]%s]*%s+[%d%.]+)%s*%-%s*([%d%.]+)&amp;#039;, &amp;#039;%1–%2&amp;#039;)&lt;br /&gt;
	s = mw.ustring.gsub(s, &amp;#039;^%s*(%[%[[^%[%]]*%|[%d%.]+)%s*&amp;amp;[MmNn][Dd][Aa][Ss][Hh];%s*([%d%.]+)&amp;#039;, &amp;#039;%1–%2&amp;#039;)&lt;br /&gt;
	s = mw.ustring.gsub(s, &amp;#039;^%s*(%[[^%[%]%s]*%s+[%d%.]+)%s*&amp;amp;[MmNn][Dd][Aa][Ss][Hh];%s*([%d%.]+)&amp;#039;, &amp;#039;%1–%2&amp;#039;)&lt;br /&gt;
	return s&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.header(tt,Args,p_sub,N_teams,team_list,legs,multirowlegs)&lt;br /&gt;
	local ii, team_code_ii, short_name&lt;br /&gt;
	legs = legs or 1&lt;br /&gt;
&lt;br /&gt;
	-- Set match column width&lt;br /&gt;
	local col_width = Args[&amp;#039;match_col_width&amp;#039;] or &amp;#039;28&amp;#039;&lt;br /&gt;
&lt;br /&gt;
	-- Get some default values in case it doesn&amp;#039;t start at 1&lt;br /&gt;
	local top_pos = tonumber(Args[&amp;#039;highest_pos&amp;#039;]) or 1&lt;br /&gt;
&lt;br /&gt;
	for l=1,legs do&lt;br /&gt;
		if multirowlegs and l &amp;gt; 1 then&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
		for ii=top_pos,N_teams do&lt;br /&gt;
			team_code_ii = team_list[ii]&lt;br /&gt;
			short_name = get_short_name(Args[&amp;#039;short_&amp;#039;..team_code_ii],&lt;br /&gt;
				team_code_ii, Args[&amp;#039;name_&amp;#039;..team_code_ii], Args[&amp;#039;short_style&amp;#039;] or &amp;#039;&amp;#039;)&lt;br /&gt;
			local bl = legs &amp;gt; 1 and ii == top_pos and &amp;#039; style=&amp;quot;border-left:2px solid #aaa;&amp;quot;&amp;#039; or &amp;#039;&amp;#039;&lt;br /&gt;
			tt = p_sub.colhead(tt,col_width .. bl,short_name)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return tt&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.row(tt,Args,N_teams,team_list,ii,ii_show,legs,multirowlegs)&lt;br /&gt;
	-- Note ii is the row number being shown&lt;br /&gt;
	local jj, fw, bg, result, result_extra, team_code_ii, team_code_jj&lt;br /&gt;
	legs = legs or 1&lt;br /&gt;
&lt;br /&gt;
	-- Set score cell style&lt;br /&gt;
	local matches_style = Args[&amp;#039;matches_style&amp;#039;] or &amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
	team_code_ii = team_list[ii]&lt;br /&gt;
&lt;br /&gt;
	-- Get some default values in case it doesn&amp;#039;t start at 1&lt;br /&gt;
	local top_pos = tonumber(Args[&amp;#039;highest_pos&amp;#039;]) or 1&lt;br /&gt;
	for l=1,legs do&lt;br /&gt;
		if multirowlegs and l &amp;gt; 1 then&lt;br /&gt;
			table.insert(tt,&amp;#039;|- \n&amp;#039;)  -- New row&lt;br /&gt;
		end&lt;br /&gt;
		for jj=top_pos,N_teams do&lt;br /&gt;
			team_code_jj = team_list[jj]&lt;br /&gt;
			local m = (legs == 1) and &amp;#039;match_&amp;#039; or &amp;#039;match&amp;#039; .. l .. &amp;#039;_&amp;#039;&lt;br /&gt;
			result = Args[m..team_code_ii..&amp;#039;_&amp;#039;..team_code_jj] or &amp;#039;&amp;#039;&lt;br /&gt;
			result_extra = Args[&amp;#039;result_&amp;#039;..team_code_ii..&amp;#039;_&amp;#039;..team_code_jj] or &amp;#039;&amp;#039;&lt;br /&gt;
			local bl = legs &amp;gt; 1 and jj == top_pos and &amp;#039;border-left:2px solid #aaa;&amp;#039; or &amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
			if ii == jj or result == &amp;#039;null&amp;#039; then&lt;br /&gt;
				-- Solid cell&lt;br /&gt;
				fw = &amp;#039;font-weight:&amp;#039; .. (ii==ii_show and &amp;#039;bold&amp;#039; or &amp;#039;normal&amp;#039;) .. &amp;#039;;&amp;#039;&lt;br /&gt;
				bg = &amp;#039;background:transparent;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
				-- Grey background color for solid cell&lt;br /&gt;
				if Args[&amp;#039;solid_cell&amp;#039;] == &amp;#039;grey&amp;#039; then&lt;br /&gt;
					table.insert(tt,&amp;#039;| style=&amp;quot;&amp;#039;..fw..bl..&amp;#039;background:#bbb;&amp;quot; |\n&amp;#039;)&lt;br /&gt;
				else&lt;br /&gt;
					table.insert(tt,&amp;#039;| style=&amp;quot;&amp;#039;..fw..bl..bg..&amp;#039;&amp;quot; | &amp;amp;mdash;\n&amp;#039;)&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				-- Content cell&lt;br /&gt;
				-- Set bolding and background&lt;br /&gt;
				fw = &amp;#039;font-weight:&amp;#039; .. ((ii==ii_show or jj == ii_show) and &amp;#039;bold&amp;#039; or &amp;#039;normal&amp;#039;) .. &amp;#039;;&amp;#039;&lt;br /&gt;
				bg = &amp;#039;background:transparent;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
				-- Reformat dashes&lt;br /&gt;
				if result ~= &amp;#039;&amp;#039; then&lt;br /&gt;
					result = format_score(result)&lt;br /&gt;
				end&lt;br /&gt;
				-- Background coloring if enabled&lt;br /&gt;
				if matches_style == &amp;#039;FBR&amp;#039; and result ~= &amp;#039;&amp;#039; then&lt;br /&gt;
					if result_extra == &amp;#039;OT&amp;#039; then&lt;br /&gt;
						bg = &amp;#039;background:&amp;#039; .. get_score_background(result,&amp;#039;level2&amp;#039;) .. &amp;#039;;&amp;#039;&lt;br /&gt;
					elseif result_extra == &amp;#039;PK&amp;#039; then&lt;br /&gt;
						bg = &amp;#039;background:&amp;#039; .. get_score_background(result,&amp;#039;level3&amp;#039;) .. &amp;#039;;&amp;#039;&lt;br /&gt;
					else&lt;br /&gt;
						bg = &amp;#039;background:&amp;#039; .. get_score_background(result,&amp;#039;&amp;#039;) .. &amp;#039;;&amp;#039;&lt;br /&gt;
					end&lt;br /&gt;
				elseif matches_style == &amp;#039;BSR&amp;#039; and result ~= &amp;#039;&amp;#039; then&lt;br /&gt;
					if result_extra == &amp;#039;OT&amp;#039; then&lt;br /&gt;
						bg = &amp;#039;background:&amp;#039; .. get_score_background(result,&amp;#039;level3&amp;#039;) .. &amp;#039;;&amp;#039;&lt;br /&gt;
					elseif result_extra == &amp;#039;OTL&amp;#039; then&lt;br /&gt;
						bg = &amp;#039;background:&amp;#039; .. get_score_background(&amp;#039;0–1&amp;#039;,&amp;#039;level3&amp;#039;) .. &amp;#039;;&amp;#039;&lt;br /&gt;
					elseif result_extra == &amp;#039;OTW&amp;#039; then&lt;br /&gt;
						bg = &amp;#039;background:&amp;#039; .. get_score_background(&amp;#039;1–0&amp;#039;,&amp;#039;level3&amp;#039;) .. &amp;#039;;&amp;#039;&lt;br /&gt;
					elseif result_extra == &amp;#039;L&amp;#039; then&lt;br /&gt;
						bg = &amp;#039;background:&amp;#039; .. get_score_background(&amp;#039;0–1&amp;#039;,&amp;#039;&amp;#039;) .. &amp;#039;;&amp;#039;&lt;br /&gt;
					elseif result_extra == &amp;#039;W&amp;#039; then&lt;br /&gt;
						bg = &amp;#039;background:&amp;#039; .. get_score_background(&amp;#039;1–0&amp;#039;,&amp;#039;&amp;#039;) .. &amp;#039;;&amp;#039;&lt;br /&gt;
					else&lt;br /&gt;
						bg = &amp;#039;background:&amp;#039; .. get_score_background(result,&amp;#039;&amp;#039;) .. &amp;#039;;&amp;#039;&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
				table.insert(tt,&amp;#039;| style=&amp;quot;white-space:nowrap;&amp;#039;..fw..bl..bg..&amp;#039;&amp;quot; |&amp;#039;..result..&amp;#039;\n&amp;#039;)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return tt&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;Plastikspork</name></author>
	</entry>
</feed>