<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="nb">
	<id>https://www.wikisida.no/index.php?action=history&amp;feed=atom&amp;title=Modul%3ASports_rbr_table</id>
	<title>Modul:Sports rbr table - Sideversjonshistorikk</title>
	<link rel="self" type="application/atom+xml" href="https://www.wikisida.no/index.php?action=history&amp;feed=atom&amp;title=Modul%3ASports_rbr_table"/>
	<link rel="alternate" type="text/html" href="https://www.wikisida.no/index.php?title=Modul:Sports_rbr_table&amp;action=history"/>
	<updated>2026-05-03T23:15:38Z</updated>
	<subtitle>Versjonshistorikk for denne siden på wikien</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://www.wikisida.no/index.php?title=Modul:Sports_rbr_table&amp;diff=10464&amp;oldid=prev</id>
		<title>Wikisida: Én sideversjon ble importert</title>
		<link rel="alternate" type="text/html" href="https://www.wikisida.no/index.php?title=Modul:Sports_rbr_table&amp;diff=10464&amp;oldid=prev"/>
		<updated>2026-02-09T13:36:01Z</updated>

		<summary type="html">&lt;p&gt;Én sideversjon ble importert&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;nb&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Eldre sideversjon&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Sideversjonen fra 9. feb. 2026 kl. 13:36&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-notice&quot; lang=&quot;nb&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(Ingen forskjell)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key c1wiki:diff:1.41:old-10463:rev-10464 --&gt;
&lt;/table&gt;</summary>
		<author><name>Wikisida</name></author>
	</entry>
	<entry>
		<id>https://www.wikisida.no/index.php?title=Modul:Sports_rbr_table&amp;diff=10463&amp;oldid=prev</id>
		<title>nb&gt;Torrbakk på 26. mai 2025 kl. 18:24</title>
		<link rel="alternate" type="text/html" href="https://www.wikisida.no/index.php?title=Modul:Sports_rbr_table&amp;diff=10463&amp;oldid=prev"/>
		<updated>2025-05-26T18:24:37Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Ny side&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- This module implements {{Sports rbr table}}&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Internationalisation&lt;br /&gt;
local labels = {&lt;br /&gt;
	teamround = &amp;#039;Lag╲Runde&amp;#039;,&lt;br /&gt;
	source = &amp;#039;Kilde:&amp;#039;,&lt;br /&gt;
	notes = &amp;#039;Notater:&amp;#039;,&lt;br /&gt;
	matches = &amp;#039;kamp(er)&amp;#039;,&lt;br /&gt;
	updatedto = &amp;#039;Oppdatert per &amp;lt;matches&amp;gt; spilt &amp;lt;date&amp;gt;.&amp;#039;,&lt;br /&gt;
	firstplayed = &amp;#039;Første &amp;lt;matches&amp;gt; vil bli spilt &amp;lt;date&amp;gt;.&amp;#039;,&lt;br /&gt;
	futuredate = &amp;#039;?&amp;#039;,&lt;br /&gt;
	complete = &amp;#039;complete&amp;#039;,&lt;br /&gt;
	future = &amp;#039;future&amp;#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local templatestyles = &amp;#039;Sports rbr table/styles.css&amp;#039;&lt;br /&gt;
&lt;br /&gt;
local args = nil&lt;br /&gt;
&lt;br /&gt;
local preview, tracking = &amp;#039;&amp;#039;, &amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
local colorlist = {}&lt;br /&gt;
local textlist = {}&lt;br /&gt;
&lt;br /&gt;
local color_map = {&lt;br /&gt;
		green1=&amp;#039;#BBF3BB&amp;#039;, green2=&amp;#039;#CCF9CC&amp;#039;, green3=&amp;#039;#DDFCDD&amp;#039;, green4=&amp;#039;#EEFFEE&amp;#039;,&lt;br /&gt;
		blue1=&amp;#039;#BBF3FF&amp;#039;, blue2=&amp;#039;#CCF9FF&amp;#039;, blue3=&amp;#039;#DDFCFF&amp;#039;, blue4=&amp;#039;#EEFFFF&amp;#039;,&lt;br /&gt;
		yellow1=&amp;#039;#FFFFBB&amp;#039;, yellow2=&amp;#039;#FFFFCC&amp;#039;, yellow3=&amp;#039;#FFFFDD&amp;#039;, yellow4=&amp;#039;#FFFFEE&amp;#039;,&lt;br /&gt;
		red1=&amp;#039;#FFBBBB&amp;#039;, red2=&amp;#039;#FFCCCC&amp;#039;, red3=&amp;#039;#FFDDDD&amp;#039;, red4=&amp;#039;#FFEEEE&amp;#039;,&lt;br /&gt;
		black1=&amp;#039;#BBBBBB&amp;#039;, black2=&amp;#039;#CCCCCC&amp;#039;, black3=&amp;#039;#DDDDDD&amp;#039;, black4=&amp;#039;#EEEEEE&amp;#039;,&lt;br /&gt;
		[&amp;#039;1st&amp;#039;]=&amp;#039;#FFD700&amp;#039;, [&amp;#039;2nd&amp;#039;]=&amp;#039;#C0C0C0&amp;#039;, [&amp;#039;3rd&amp;#039;]=&amp;#039;#CC9966&amp;#039;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
local legend_symbols = {&lt;br /&gt;
	V=&amp;#039;S&amp;#039;, S=&amp;#039;S&amp;#039;, U=&amp;#039;U&amp;#039;, T=&amp;#039;T&amp;#039;, Av=&amp;#039;Av&amp;#039;, Ut=&amp;#039;Ut&amp;#039;, W=&amp;#039;S&amp;#039;, D=&amp;#039;U&amp;#039;, L=&amp;#039;T&amp;#039;, Ab=&amp;#039;Av&amp;#039;, P=&amp;#039;Ut&amp;#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local legend_order_default = {&lt;br /&gt;
	&amp;#039;V&amp;#039;, &amp;#039;S&amp;#039;, &amp;#039;U&amp;#039;, &amp;#039;T&amp;#039;, &amp;#039;Av&amp;#039;, &amp;#039;Ut&amp;#039;, &amp;#039;W&amp;#039;, &amp;#039;D&amp;#039;, &amp;#039;L&amp;#039;, &amp;#039;Ab&amp;#039;, &amp;#039;P&amp;#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local function isnotempty(s)&lt;br /&gt;
	return s and s:match( &amp;#039;^%s*(.-)%s*$&amp;#039; ) ~= &amp;#039;&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function zeropad(n)&lt;br /&gt;
	if n&amp;gt;=0 and n &amp;lt; 10 then&lt;br /&gt;
		return &amp;#039;00&amp;#039; .. n&lt;br /&gt;
	end&lt;br /&gt;
	if n&amp;gt;=0 and n &amp;lt; 100 then&lt;br /&gt;
		return &amp;#039;0&amp;#039; .. n&lt;br /&gt;
	end&lt;br /&gt;
	return &amp;#039;&amp;#039; .. n&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function pad_key(k)&lt;br /&gt;
	-- Zero pad, fix ranges and dashes&lt;br /&gt;
	if k then&lt;br /&gt;
		k = k .. &amp;#039; &amp;#039;&lt;br /&gt;
		k = mw.ustring.gsub(k, &amp;#039;–&amp;#039;, &amp;#039;-&amp;#039;)&lt;br /&gt;
		k = mw.ustring.gsub(k, &amp;#039;_([%d][^%d])&amp;#039;, &amp;#039;_0%1&amp;#039;)&lt;br /&gt;
		k = mw.ustring.gsub(k, &amp;#039;%-([%d][^%d])&amp;#039;, &amp;#039;-0%1&amp;#039;)&lt;br /&gt;
		k = mw.ustring.gsub(k, &amp;#039;_([%d][%d][^%d])&amp;#039;, &amp;#039;_0%1&amp;#039;)&lt;br /&gt;
		k = mw.ustring.gsub(k, &amp;#039;%-([%d][%d][^%d])&amp;#039;, &amp;#039;-0%1&amp;#039;)&lt;br /&gt;
		k = mw.ustring.gsub(k, &amp;#039;([^%d])%-([%d])&amp;#039;, &amp;#039;%1000-%2&amp;#039;)&lt;br /&gt;
		k = mw.ustring.gsub(k, &amp;#039;([%d])%-%s*$&amp;#039;, &amp;#039;%1-999&amp;#039;)&lt;br /&gt;
		k = mw.ustring.gsub(k, &amp;#039;^%s*(.-)%s*$&amp;#039;, &amp;#039;%1&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return k&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function matches_date(text, m, d)&lt;br /&gt;
	return mw.ustring.gsub(mw.ustring.gsub(text .. &amp;#039;&amp;#039;, &amp;#039;&amp;lt;matches&amp;gt;&amp;#039;, m), &amp;#039;&amp;lt;date&amp;gt;&amp;#039;, d)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function escapetag(text)&lt;br /&gt;
	return mw.ustring.gsub(text, &amp;#039;&amp;lt;/&amp;#039;, &amp;#039;&amp;lt;FORWARDSLASH&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function unescapetag(text)&lt;br /&gt;
	return mw.ustring.gsub(text, &amp;#039;&amp;lt;FORWARDSLASH&amp;#039;, &amp;#039;&amp;lt;/&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function get_color(p)&lt;br /&gt;
	if p then&lt;br /&gt;
		p = mw.ustring.gsub(p, &amp;#039;&amp;lt;/?[Aa][Bb][Bb][Rr][^&amp;lt;&amp;gt;]*&amp;gt;&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
		p = mw.ustring.gsub(p, &amp;#039;&amp;lt;[Ss][Uu][Pp]&amp;gt;[^&amp;lt;&amp;gt;]*&amp;lt;/[Ss][Uu][Pp]&amp;gt;&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
		p = mw.ustring.gsub(p, &amp;#039;&amp;lt;/?[Ss][^&amp;lt;&amp;gt;]*&amp;gt;&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
		p = mw.ustring.gsub(p, &amp;#039;†%s*$&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
		p = mw.ustring.gsub(p, &amp;#039;%[%[[^%[%]|]*|([^%[%]|]*)%]%]&amp;#039;, &amp;#039;%1&amp;#039;)&lt;br /&gt;
		if p:match(&amp;#039;^%a%a*$&amp;#039;) then&lt;br /&gt;
			if args[&amp;#039;text_&amp;#039; .. p] == nil then&lt;br /&gt;
				tracking = tracking .. &amp;#039;[[Category:Pages using sports rbr table with an undescribed result|&amp;#039; &lt;br /&gt;
					.. p:match(&amp;#039;^(%a).*$&amp;#039;) .. &amp;#039;]]&amp;#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local c = colorlist[p] or colorlist[zeropad(tonumber(p) or -1)]&lt;br /&gt;
	if c then&lt;br /&gt;
		return color_map[c] or c&lt;br /&gt;
	end&lt;br /&gt;
	p = tonumber(p or &amp;#039;0&amp;#039;) or 0&lt;br /&gt;
	if p &amp;lt;= 0 then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	-- ranges in order of specificity&lt;br /&gt;
	local offset1, offset2 = 999, 999&lt;br /&gt;
	for k,v in pairs( colorlist ) do&lt;br /&gt;
		local r1 = tostring(k):match( &amp;#039;^%s*([%d]+)%-[%d]+%s*$&amp;#039; )&lt;br /&gt;
		local r2 = tostring(k):match( &amp;#039;^%s*[%d]+%-([%d]+)%s*$&amp;#039; )&lt;br /&gt;
		if r1 and r2 then&lt;br /&gt;
			r1 = tonumber(r1)&lt;br /&gt;
			r2 = tonumber(r2)&lt;br /&gt;
			if (r1 &amp;lt;= p) and (r2 &amp;gt;= p) then&lt;br /&gt;
				if (c == nil) or ((p - r1) &amp;lt;= offset1 and (r2 - p) &amp;lt;= offset2) then&lt;br /&gt;
					c = color_map[v] or v&lt;br /&gt;
					offset1 = p - r1&lt;br /&gt;
					offset2 = r2 - p&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return c&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function check_arg(k)&lt;br /&gt;
	k = tostring(k) or &amp;#039;&amp;#039;&lt;br /&gt;
	if k == &amp;#039;firstround&amp;#039; or k == &amp;#039;sortable&amp;#039; or k == &amp;#039;updated&amp;#039; or k == &amp;#039;update&amp;#039;&lt;br /&gt;
		or k ==&amp;#039;source&amp;#039; or k ==&amp;#039;notes&amp;#039; or k == &amp;#039;legendpos&amp;#039; or k == &amp;#039;date&amp;#039; &lt;br /&gt;
		or k == &amp;#039;header&amp;#039; or k == &amp;#039;title&amp;#039; or k == &amp;#039;start_date&amp;#039; or k == &amp;#039;labelalign&amp;#039;&lt;br /&gt;
		or k == &amp;#039;toptext&amp;#039; then&lt;br /&gt;
	elseif k == &amp;#039;legendorder&amp;#039; then&lt;br /&gt;
		tracking = tracking .. &amp;#039;[[Category:Pages using sports rbr table with legendorder]]&amp;#039;&lt;br /&gt;
	elseif tostring(k):match( &amp;#039;^%s*text_?(.-)%s*$&amp;#039; ) then&lt;br /&gt;
	elseif tostring(k):match( &amp;#039;^%s*colou?_?(.-)%s*$&amp;#039; ) then&lt;br /&gt;
	elseif tostring(k):match( &amp;#039;^%s*team[%d]+%s*$&amp;#039; ) then&lt;br /&gt;
	elseif tostring(k):match( &amp;#039;^%s*label[%d]+%s*$&amp;#039; ) then&lt;br /&gt;
		if args[&amp;#039;header&amp;#039;] then&lt;br /&gt;
		else&lt;br /&gt;
			tracking = tracking .. &amp;#039;[[Category:Pages using sports rbr table with unsupported parameters|ψ]]&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
	elseif tostring(k):match( &amp;#039;^%s*pos[%d]+%s*$&amp;#039; ) then&lt;br /&gt;
	elseif tostring(k):match( &amp;#039;^%s*res[%d]+%s*$&amp;#039; ) then&lt;br /&gt;
	elseif tostring(k):match( &amp;#039;^%s*split[%d]+%s*$&amp;#039; ) then&lt;br /&gt;
	elseif k == &amp;#039;rnd1&amp;#039; then&lt;br /&gt;
		tracking = tracking .. &amp;#039;[[Category:Pages using sports rbr table with rnd parameters]]&amp;#039;&lt;br /&gt;
	elseif tostring(k):match( &amp;#039;^%s*rnd[%d]+%s*$&amp;#039; ) then&lt;br /&gt;
	elseif tostring(k):match( &amp;#039;^%s*pos_&amp;#039; ) then&lt;br /&gt;
	elseif tostring(k):match( &amp;#039;^%s*res_&amp;#039; ) then&lt;br /&gt;
	elseif tostring(k):match( &amp;#039;^%s*name_&amp;#039; ) then&lt;br /&gt;
	elseif tostring(k):match( &amp;#039;^%s*pos[%d]+_rnd[%d]+_colou?r%s*$&amp;#039; ) then&lt;br /&gt;
	elseif tostring(k):match( &amp;#039;^%s*res[%d]+_rnd[%d]+_colou?r%s*$&amp;#039; ) then&lt;br /&gt;
	elseif tostring(k):match( &amp;#039;^%s*pos[%d]+_rnd[%d]+_note%s*$&amp;#039; ) then&lt;br /&gt;
	elseif tostring(k):match( &amp;#039;^%s*res[%d]+_rnd[%d]+_note%s*$&amp;#039; ) then&lt;br /&gt;
	else&lt;br /&gt;
		local vlen = mw.ustring.len(k)&lt;br /&gt;
		k = mw.ustring.sub(k, 1, (vlen &amp;lt; 25) and vlen or 25) &lt;br /&gt;
		k = mw.ustring.gsub(k, &amp;#039;[^%w\-_ ]&amp;#039;, &amp;#039;?&amp;#039;)&lt;br /&gt;
		preview = preview .. &amp;#039;Unknown: &amp;quot;&amp;#039; .. k .. &amp;#039;&amp;quot;&amp;lt;br&amp;gt;&amp;#039;&lt;br /&gt;
		tracking = tracking .. &amp;#039;[[Category:Pages using sports rbr table with unsupported parameters|&amp;#039; .. k .. &amp;#039;]]&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.table(frame)&lt;br /&gt;
	local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
	local yesno = require(&amp;#039;Module:Yesno&amp;#039;)&lt;br /&gt;
	args = getArgs(frame, {wrappers = {&amp;#039;Template:Sports rbr table&amp;#039;}})&lt;br /&gt;
	local rounds = tonumber(args[&amp;#039;rounds&amp;#039;] or &amp;#039;0&amp;#039;) or 0&lt;br /&gt;
	local firstround = tonumber(args[&amp;#039;firstround&amp;#039;] or 1) or 1&lt;br /&gt;
	local sortable = yesno(args[&amp;#039;sortable&amp;#039;] or &amp;#039;no&amp;#039;)&lt;br /&gt;
	local updated = args[&amp;#039;updated&amp;#039;] or args[&amp;#039;update&amp;#039;]&lt;br /&gt;
	local source = args[&amp;#039;source&amp;#039;]&lt;br /&gt;
	local notes = args[&amp;#039;notes&amp;#039;]&lt;br /&gt;
	local delimiter = args[&amp;#039;delimiter&amp;#039;] or &amp;#039;/&amp;#039;&lt;br /&gt;
	local addlegend = nil&lt;br /&gt;
	local legendpos = (args[&amp;#039;legendpos&amp;#039;] or &amp;#039;tr&amp;#039;):lower()&lt;br /&gt;
	local header, footer, prenotes  = &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
	-- Lowercase two labels --&lt;br /&gt;
	labels[&amp;#039;complete&amp;#039;] = string.lower(labels[&amp;#039;complete&amp;#039;])&lt;br /&gt;
	labels[&amp;#039;future&amp;#039;] = string.lower(labels[&amp;#039;future&amp;#039;])&lt;br /&gt;
&lt;br /&gt;
	-- Adjust rounds&lt;br /&gt;
	rounds = rounds - (firstround - 1)&lt;br /&gt;
	&lt;br /&gt;
	-- Tracking&lt;br /&gt;
	if updated and updated:match(&amp;#039; %d%d%d%d$&amp;#039;) then&lt;br /&gt;
		local YY = mw.ustring.gsub(updated, &amp;#039;^.*(%d%d)$&amp;#039;, &amp;#039;%1&amp;#039;)&lt;br /&gt;
		local pn = frame:getParent():getTitle() or &amp;#039;&amp;#039;&lt;br /&gt;
		if pn:match(&amp;#039;^User:&amp;#039;) or pn:match(&amp;#039;^User talk:&amp;#039;) or pn:match(&amp;#039;^Draft:&amp;#039;) or pn:match(&amp;#039;^Talk:&amp;#039;) then&lt;br /&gt;
		else&lt;br /&gt;
			if pn:match(&amp;#039;%d%d&amp;#039; .. YY) or pn:match(&amp;#039;[–%-]&amp;#039; .. YY) then&lt;br /&gt;
			else&lt;br /&gt;
				tracking = tracking .. &amp;#039;[[Category:Pages using sports rbr table with dubious updated parameter]]&amp;#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
    end&lt;br /&gt;
	-- Require a source&lt;br /&gt;
	if source == nil and args[&amp;#039;date&amp;#039;] then&lt;br /&gt;
		source = frame:expandTemplate{ title = &amp;#039;citation needed&amp;#039;, args = { reason=&amp;#039;No source parameter defined&amp;#039;, date=date or os.date(&amp;#039;%B %Y&amp;#039;) } }&lt;br /&gt;
	elseif source and source:match(&amp;#039;[^%[]#&amp;#039;) then &lt;br /&gt;
		if source:match(&amp;#039;eason#&amp;#039;) or source:match(&amp;#039;%d%d#&amp;#039;) then&lt;br /&gt;
			tracking = tracking .. &amp;#039;[[Category:Pages using sports rbr table with an unusual source]]&amp;#039;&lt;br /&gt;
		elseif source:match(&amp;#039;^[Hh][Tt][Tt][Pp]&amp;#039;) then&lt;br /&gt;
			tracking = tracking .. &amp;#039;[[Category:Pages using sports rbr table with an unusual source|Φ]]&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Process team, pos, and color args&lt;br /&gt;
	local team_list = {}&lt;br /&gt;
	local maxrounds = 0&lt;br /&gt;
	local rowlength = {}&lt;br /&gt;
	for k, v in pairs( args ) do&lt;br /&gt;
		check_arg(k)&lt;br /&gt;
		-- Preprocess ranges&lt;br /&gt;
		if tostring(k):match( &amp;#039;^%s*text_?(.-)%s*$&amp;#039; ) then&lt;br /&gt;
			k = pad_key(k)&lt;br /&gt;
		end&lt;br /&gt;
		if tostring(k):match( &amp;#039;^%s*colou?r_?(.-)%s*$&amp;#039; ) then&lt;br /&gt;
			k = pad_key(k)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- Create the list of teams and count rounds&lt;br /&gt;
		local i = tonumber(&lt;br /&gt;
				tostring(k):match( &amp;#039;^%s*team([%d]+)%s*$&amp;#039; ) or&lt;br /&gt;
				tostring(k):match( &amp;#039;^%s*label([%d]+)%s*$&amp;#039; ) or &amp;#039;0&amp;#039;&lt;br /&gt;
				)&lt;br /&gt;
		if ( i &amp;gt; 0 and isnotempty(v) ) then&lt;br /&gt;
			table.insert( team_list, i)&lt;br /&gt;
			local p = args[&amp;#039;pos&amp;#039; .. i] or args[&amp;#039;res&amp;#039; .. i] or &amp;#039;&amp;#039;&lt;br /&gt;
			if args[&amp;#039;name_&amp;#039; .. v] then&lt;br /&gt;
				local t = args[&amp;#039;team&amp;#039; .. i] or args[&amp;#039;label&amp;#039; .. i] or &amp;#039;&amp;#039;&lt;br /&gt;
				p = args[&amp;#039;pos_&amp;#039; .. t] or args[&amp;#039;res_&amp;#039; .. t] or &amp;#039;&amp;#039;&lt;br /&gt;
			end&lt;br /&gt;
			local pos = mw.text.split(escapetag(p), &amp;#039;%s*&amp;#039; .. delimiter .. &amp;#039;%s*&amp;#039;)&lt;br /&gt;
			table.insert(rowlength, #pos)&lt;br /&gt;
			maxrounds = (#pos &amp;gt; maxrounds) and #pos or maxrounds&lt;br /&gt;
		end&lt;br /&gt;
		-- Create the list of colors&lt;br /&gt;
		local s = tostring(k):match( &amp;#039;^%s*colou?r_?(.-)%s*$&amp;#039; )&lt;br /&gt;
		if ( s and isnotempty(v) ) then&lt;br /&gt;
			colorlist[s] = v:lower()&lt;br /&gt;
		end&lt;br /&gt;
		-- Check if we are adding a legend&lt;br /&gt;
		s = tostring(k):match( &amp;#039;^%s*text_?(.-)%s*$&amp;#039; )&lt;br /&gt;
		if ( s and isnotempty(v) ) then&lt;br /&gt;
			textlist[s] = v&lt;br /&gt;
			addlegend = 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	maxrounds = (rounds &amp;gt; maxrounds) and rounds or maxrounds&lt;br /&gt;
	table.sort(rowlength)&lt;br /&gt;
	for k=2,#rowlength do&lt;br /&gt;
		if rowlength[k] ~= rowlength[k-1] then&lt;br /&gt;
			tracking = tracking .. &amp;#039;[[Category:Pages using sports rbr table with unequal row lengths|k]]&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- sort the teams&lt;br /&gt;
	table.sort(team_list)&lt;br /&gt;
&lt;br /&gt;
	local fs = 95&lt;br /&gt;
	if ((maxrounds - firstround) &amp;gt; 37 ) then&lt;br /&gt;
		fs = fs - 2*(maxrounds - firstround - 37)&lt;br /&gt;
		fs = (fs &amp;lt; 80) and 80 or fs&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Build the table&lt;br /&gt;
	local root = mw.html.create(&amp;#039;table&amp;#039;)&lt;br /&gt;
	root:addClass(&amp;#039;wikitable&amp;#039;)&lt;br /&gt;
	root:addClass(sortable and &amp;#039;sortable&amp;#039; or nil)&lt;br /&gt;
	root:addClass(&amp;#039;sportsrbrtable&amp;#039;)&lt;br /&gt;
	root:css(&amp;#039;font-size&amp;#039;, fs .. &amp;#039;%&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
	if args[&amp;#039;title&amp;#039;] then&lt;br /&gt;
		root:tag(&amp;#039;caption&amp;#039;):wikitext(args[&amp;#039;title&amp;#039;])&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local navbar = &amp;#039;&amp;#039;&lt;br /&gt;
	if args[&amp;#039;template_name&amp;#039;] then&lt;br /&gt;
		navbar = &amp;#039;&amp;lt;br /&amp;gt;&amp;#039; .. frame:expandTemplate{ title = &amp;#039;navbar&amp;#039;, args = { mini=1, style=&amp;#039;&amp;#039;, brackets=1, args[&amp;#039;template_name&amp;#039;]}}&lt;br /&gt;
		-- remove the next part if https://en.wikipedia.org/w/index.php?oldid=832717047#Sortable_link_disables_navbar_links?&lt;br /&gt;
		-- is ever fixed&lt;br /&gt;
		if sortable then&lt;br /&gt;
			navbar = mw.ustring.gsub(navbar, &amp;#039;&amp;lt;%/?abbr[^&amp;lt;&amp;gt;]*&amp;gt;&amp;#039;, &amp;#039; &amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- Heading row&lt;br /&gt;
	local row = root:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
	row:tag(&amp;#039;th&amp;#039;)&lt;br /&gt;
		:attr(&amp;#039;rowspan&amp;#039;, args[&amp;#039;sortable&amp;#039;] and 2 or nil)&lt;br /&gt;
		:wikitext((args[&amp;#039;header&amp;#039;] or labels[&amp;#039;teamround&amp;#039;]) .. navbar)&lt;br /&gt;
	for r=1,maxrounds do&lt;br /&gt;
		row:tag(&amp;#039;th&amp;#039;)&lt;br /&gt;
			:addClass(args[&amp;#039;sortable&amp;#039;] and &amp;#039;sportsrbrtable-rnd-sort&amp;#039; or &amp;#039;sportsrbrtable-rnd&amp;#039;)&lt;br /&gt;
			:attr(&amp;#039;scope&amp;#039;, &amp;#039;col&amp;#039;)&lt;br /&gt;
			:wikitext(args[&amp;#039;rnd&amp;#039; .. (r + (firstround - 1))]&lt;br /&gt;
				or (r + (firstround - 1)))&lt;br /&gt;
	end&lt;br /&gt;
	if args[&amp;#039;sortable&amp;#039;] then&lt;br /&gt;
		row = root:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
		for r=1,maxrounds do&lt;br /&gt;
			row:tag(&amp;#039;th&amp;#039;)&lt;br /&gt;
				:addClass(&amp;#039;sportsrbrtable-rnd-toggle&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Team positions&lt;br /&gt;
	for k=1,#team_list do&lt;br /&gt;
		local i = team_list[k]&lt;br /&gt;
		local t = args[&amp;#039;team&amp;#039; .. i] or args[&amp;#039;label&amp;#039; .. i] or &amp;#039;&amp;#039;&lt;br /&gt;
		local p = args[&amp;#039;pos&amp;#039; .. i] or args[&amp;#039;res&amp;#039; .. i] or &amp;#039;&amp;#039;&lt;br /&gt;
		if args[&amp;#039;name_&amp;#039; .. t] then&lt;br /&gt;
			p = args[&amp;#039;pos_&amp;#039; .. t] or args[&amp;#039;res_&amp;#039; .. t] or &amp;#039;&amp;#039;&lt;br /&gt;
			t = args[&amp;#039;name_&amp;#039; .. t]&lt;br /&gt;
		end&lt;br /&gt;
		row = root:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
		row:tag(&amp;#039;th&amp;#039;)&lt;br /&gt;
			:addClass(&amp;#039;sportsrbrtable-team&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;text-align&amp;#039;, args[&amp;#039;labelalign&amp;#039;])&lt;br /&gt;
			:attr(&amp;#039;scope&amp;#039;, &amp;#039;row&amp;#039;)&lt;br /&gt;
			:wikitext(t)&lt;br /&gt;
		if t:match(&amp;#039;&amp;lt;%s*[Cc][Ee][Nn][Tt][Ee][Rr]%s*&amp;gt;&amp;#039;) then&lt;br /&gt;
			tracking = tracking .. &amp;#039;[[Category:Pages using sports rbr table with unsupported parameters|χ]]&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
		local pos = mw.text.split(escapetag(p), &amp;#039;%s*&amp;#039; .. delimiter .. &amp;#039;%s*&amp;#039;)&lt;br /&gt;
		for r=1,maxrounds do&lt;br /&gt;
			local s = args[&amp;#039;team&amp;#039; .. i .. &amp;#039;_rnd&amp;#039; .. r .. &amp;#039;_&amp;#039; .. &amp;#039;color&amp;#039;] or&lt;br /&gt;
				args[&amp;#039;team&amp;#039; .. i .. &amp;#039;_rnd&amp;#039; .. r .. &amp;#039;_&amp;#039; .. &amp;#039;colour&amp;#039;] or&lt;br /&gt;
				args[&amp;#039;pos&amp;#039; .. i .. &amp;#039;_rnd&amp;#039; .. r .. &amp;#039;_&amp;#039; .. &amp;#039;color&amp;#039;] or&lt;br /&gt;
				args[&amp;#039;pos&amp;#039; .. i .. &amp;#039;_rnd&amp;#039; .. r .. &amp;#039;_&amp;#039; .. &amp;#039;colour&amp;#039;] or&lt;br /&gt;
				args[&amp;#039;res&amp;#039; .. i .. &amp;#039;_rnd&amp;#039; .. r .. &amp;#039;_&amp;#039; .. &amp;#039;color&amp;#039;] or&lt;br /&gt;
				args[&amp;#039;res&amp;#039; .. i .. &amp;#039;_rnd&amp;#039; .. r .. &amp;#039;_&amp;#039; .. &amp;#039;colour&amp;#039;] or nil&lt;br /&gt;
			local n = args[&amp;#039;team&amp;#039; .. i .. &amp;#039;_rnd&amp;#039; .. r .. &amp;#039;_&amp;#039; .. &amp;#039;note&amp;#039;] or&lt;br /&gt;
				args[&amp;#039;pos&amp;#039; .. i .. &amp;#039;_rnd&amp;#039; .. r .. &amp;#039;_&amp;#039; .. &amp;#039;note&amp;#039;] or&lt;br /&gt;
				args[&amp;#039;res&amp;#039; .. i .. &amp;#039;_rnd&amp;#039; .. r .. &amp;#039;_&amp;#039; .. &amp;#039;note&amp;#039;] or nil&lt;br /&gt;
			if s then s = color_map[s] or s end&lt;br /&gt;
			local posr = unescapetag(pos[r] or &amp;#039;&amp;#039;)&lt;br /&gt;
			row:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
				:css(&amp;#039;background-color&amp;#039;, s or get_color(posr))&lt;br /&gt;
				:wikitext((legend_symbols[posr] or posr) .. (n or &amp;#039;&amp;#039;))&lt;br /&gt;
		end&lt;br /&gt;
		if args[&amp;#039;split&amp;#039; .. i] and k ~= #team_list then&lt;br /&gt;
			row = root:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
				:css(&amp;#039;background-color&amp;#039;, &amp;#039;#BBBBBB&amp;#039;)&lt;br /&gt;
				:css(&amp;#039;line-height&amp;#039;, &amp;#039;3pt&amp;#039;)&lt;br /&gt;
			row:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
				:attr(&amp;#039;colspan&amp;#039;, maxrounds + 1)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- build the legend&lt;br /&gt;
	if addlegend then&lt;br /&gt;
		-- Sort the keys for the legend&lt;br /&gt;
		local legendkeys = {}&lt;br /&gt;
		for k,v in pairs( textlist ) do&lt;br /&gt;
			table.insert(legendkeys, k)&lt;br /&gt;
		end&lt;br /&gt;
		table.sort(legendkeys)&lt;br /&gt;
&lt;br /&gt;
		if args[&amp;#039;legendorder&amp;#039;] then&lt;br /&gt;
			legendkeys = mw.text.split(args[&amp;#039;legendorder&amp;#039;] .. delimiter ..&lt;br /&gt;
				table.concat(legend_order_default, delimiter) .. delimiter ..&lt;br /&gt;
				table.concat(legendkeys, delimiter), &amp;#039;%s*&amp;#039; .. delimiter .. &amp;#039;%s*&amp;#039;)&lt;br /&gt;
		else&lt;br /&gt;
			legendkeys = mw.text.split(&lt;br /&gt;
				table.concat(legend_order_default, delimiter) .. delimiter ..&lt;br /&gt;
				table.concat(legendkeys, delimiter), &amp;#039;%s*&amp;#039; .. delimiter .. &amp;#039;%s*&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
		local lroot&lt;br /&gt;
		if (legendpos == &amp;#039;t&amp;#039; or legendpos == &amp;#039;b&amp;#039;) then&lt;br /&gt;
			lroot = mw.html.create(&amp;#039;&amp;#039;)&lt;br /&gt;
			local firsttag = true&lt;br /&gt;
			for k,v in pairs( legendkeys ) do&lt;br /&gt;
				if v and textlist[v] then&lt;br /&gt;
					if firsttag == false then lroot:wikitext(&amp;#039;; &amp;#039;) end&lt;br /&gt;
					local c = colorlist[v] or &amp;#039;&amp;#039;&lt;br /&gt;
					local l = lroot:tag(&amp;#039;span&amp;#039;)&lt;br /&gt;
						:css(&amp;#039;margin&amp;#039;, &amp;#039;0&amp;#039;)&lt;br /&gt;
						:css(&amp;#039;white-space&amp;#039;, &amp;#039;nowrap&amp;#039;)&lt;br /&gt;
						:tag(&amp;#039;span&amp;#039;)&lt;br /&gt;
							:addClass(&amp;#039;legend-text&amp;#039;)&lt;br /&gt;
							:css(&amp;#039;border&amp;#039;, &amp;#039;none&amp;#039;)&lt;br /&gt;
							:css(&amp;#039;padding&amp;#039;, &amp;#039;1px .3em&amp;#039;)&lt;br /&gt;
							:css(&amp;#039;background-color&amp;#039;, color_map[c] or c)&lt;br /&gt;
							:css(&amp;#039;font-size&amp;#039;, &amp;#039;95%&amp;#039;)&lt;br /&gt;
							:css(&amp;#039;border&amp;#039;, &amp;#039;1px solid #BBB&amp;#039;)&lt;br /&gt;
							:css(&amp;#039;line-height&amp;#039;, &amp;#039;1.25&amp;#039;)&lt;br /&gt;
							:css(&amp;#039;text-align&amp;#039;, &amp;#039;center&amp;#039;)&lt;br /&gt;
							:wikitext(legend_symbols[v] or &amp;#039;&amp;amp;nbsp;&amp;#039;)&lt;br /&gt;
							:done()&lt;br /&gt;
						:wikitext(&amp;#039; = &amp;#039; .. textlist[v])&lt;br /&gt;
					textlist[v] = nil&lt;br /&gt;
					firsttag = false&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			lroot = mw.html.create(&amp;#039;table&amp;#039;)&lt;br /&gt;
			if legendpos == &amp;#039;tl&amp;#039; or legendpos == &amp;#039;bl&amp;#039; then&lt;br /&gt;
				lroot:addClass(&amp;#039;wikitable&amp;#039;)&lt;br /&gt;
				lroot:css(&amp;#039;font-size&amp;#039;, &amp;#039;88%&amp;#039;)&lt;br /&gt;
			else&lt;br /&gt;
				lroot:addClass(&amp;#039;infobox&amp;#039;)&lt;br /&gt;
				lroot:addClass(&amp;#039;bordered&amp;#039;)&lt;br /&gt;
				-- lroot:css(&amp;#039;width&amp;#039;, &amp;#039;auto&amp;#039;)&lt;br /&gt;
			end&lt;br /&gt;
			for k,v in pairs( legendkeys ) do&lt;br /&gt;
				if v and textlist[v] then&lt;br /&gt;
					local c = colorlist[v] or &amp;#039;&amp;#039;&lt;br /&gt;
					local row = (legendpos == &amp;#039;tl&amp;#039; or legendpos == &amp;#039;bl&amp;#039;) and lroot or lroot:tag(&amp;#039;tr&amp;#039;)&lt;br /&gt;
					local l = row:tag(&amp;#039;th&amp;#039;):css(&amp;#039;background-color&amp;#039;, color_map[c] or c)&lt;br /&gt;
					if legend_symbols[v] then&lt;br /&gt;
						l:css(&amp;#039;font-weight&amp;#039;, &amp;#039;normal&amp;#039;)&lt;br /&gt;
							:css(&amp;#039;padding&amp;#039;, &amp;#039;1px 3px&amp;#039;)&lt;br /&gt;
							:wikitext(legend_symbols[v])&lt;br /&gt;
					else&lt;br /&gt;
						l:css(&amp;#039;width&amp;#039;, &amp;#039;10px&amp;#039;)&lt;br /&gt;
					end&lt;br /&gt;
					row:tag(&amp;#039;td&amp;#039;)&lt;br /&gt;
						:css(&amp;#039;padding&amp;#039;, &amp;#039;1px 3px&amp;#039;)&lt;br /&gt;
						:wikitext(textlist[v])&lt;br /&gt;
					textlist[v] = nil&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if (legendpos == &amp;#039;bl&amp;#039; or legendpos == &amp;#039;br&amp;#039;) then&lt;br /&gt;
			footer = footer .. tostring(lroot)&lt;br /&gt;
		elseif (legendpos == &amp;#039;b&amp;#039;) then&lt;br /&gt;
			prenotes = prenotes .. tostring(lroot)&lt;br /&gt;
		elseif (legendpos == &amp;#039;t&amp;#039;) then&lt;br /&gt;
			args[&amp;#039;toptext&amp;#039;] = (args[&amp;#039;toptext&amp;#039;] or &amp;#039;&amp;#039;)&lt;br /&gt;
				.. tostring(lroot)&lt;br /&gt;
&lt;br /&gt;
		else&lt;br /&gt;
			header = header .. tostring(lroot)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- simplify updated == complete case&lt;br /&gt;
	local lupdated = updated and string.lower(updated) or &amp;#039;&amp;#039;&lt;br /&gt;
	if lupdated == labels[&amp;#039;complete&amp;#039;] or lupdated == &amp;#039;complete&amp;#039; then&lt;br /&gt;
		lupdated = &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- build the footer&lt;br /&gt;
	if prenotes ~= &amp;#039;&amp;#039; or notes or source or lupdated ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		if lupdated ~= &amp;#039;&amp;#039; then&lt;br /&gt;
			local mtext = args[&amp;#039;matches_text&amp;#039;] or labels[&amp;#039;matches&amp;#039;]&lt;br /&gt;
			if lupdated == labels[&amp;#039;future&amp;#039;] or lupdated == &amp;#039;future&amp;#039; then&lt;br /&gt;
				footer = footer .. matches_date(labels[&amp;#039;firstplayed&amp;#039;] .. &amp;#039; &amp;#039;,&lt;br /&gt;
					mtext, args[&amp;#039;start_date&amp;#039;] or labels[&amp;#039;futuredate&amp;#039;])&lt;br /&gt;
			else&lt;br /&gt;
				footer = footer .. matches_date(labels[&amp;#039;updatedto&amp;#039;] .. &amp;#039; &amp;#039;,&lt;br /&gt;
					mtext, updated)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if source then&lt;br /&gt;
			footer = footer .. labels[&amp;#039;source&amp;#039;] .. &amp;#039; &amp;#039; .. source&lt;br /&gt;
		end&lt;br /&gt;
		if prenotes ~= &amp;#039;&amp;#039; then&lt;br /&gt;
			if lupdated ~= &amp;#039;&amp;#039; or source then&lt;br /&gt;
				footer = footer .. &amp;#039;&amp;lt;br&amp;gt;&amp;#039;&lt;br /&gt;
			end&lt;br /&gt;
			footer = footer .. prenotes&lt;br /&gt;
		end&lt;br /&gt;
		if notes then&lt;br /&gt;
			if prenotes ~= &amp;#039;&amp;#039; or lupdated ~= &amp;#039;&amp;#039; or source then&lt;br /&gt;
				footer = footer .. &amp;#039;&amp;lt;br&amp;gt;&amp;#039;&lt;br /&gt;
			end&lt;br /&gt;
			footer = footer .. labels[&amp;#039;notes&amp;#039;] .. &amp;#039; &amp;#039; .. notes&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- add clear right for the legend if necessary&lt;br /&gt;
	footer = footer .. ((addlegend and (legendpos == &amp;#039;bl&amp;#039; or legendpos == &amp;#039;br&amp;#039;))&lt;br /&gt;
		and &amp;#039;&amp;lt;div style=&amp;quot;clear:right&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;#039; or &amp;#039;&amp;#039;)&lt;br /&gt;
	if tracking ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		if frame:preprocess( &amp;quot;{{REVISIONID}}&amp;quot; ) == &amp;quot;&amp;quot; then&lt;br /&gt;
			tracking = preview&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return frame:extensionTag{ name = &amp;#039;templatestyles&amp;#039;, args = { src = templatestyles} }&lt;br /&gt;
		.. header .. (args[&amp;#039;toptext&amp;#039;] or &amp;#039;&amp;#039;) .. &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;&amp;#039;&lt;br /&gt;
		.. tostring(root) .. &amp;#039;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;#039; .. footer .. tracking&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>nb&gt;Torrbakk</name></author>
	</entry>
</feed>