<?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%2FChess</id>
	<title>Module:Sports results/Chess - 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%2FChess"/>
	<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sports_results/Chess&amp;action=history"/>
	<updated>2026-04-21T10:26:24Z</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/Chess&amp;diff=146943&amp;oldid=prev</id>
		<title>imported&gt;WOSlinker: use require(&#039;strict&#039;) instead of require(&#039;Module:No globals&#039;)</title>
		<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sports_results/Chess&amp;diff=146943&amp;oldid=prev"/>
		<updated>2022-10-21T21:23:17Z</updated>

		<summary type="html">&lt;p&gt;use require(&amp;#039;strict&amp;#039;) instead of require(&amp;#039;Module:No globals&amp;#039;)&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 Chess&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;
-- 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; or ss == &amp;#039;nocountry&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;&amp;lt;span class=&amp;quot;flagicon&amp;quot;&amp;gt;[^&amp;lt;&amp;gt;]*&amp;lt;/span&amp;gt;&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
			if ss == &amp;#039;nocountry&amp;#039; then&lt;br /&gt;
				n = mw.ustring.gsub(n, &amp;#039;&amp;lt;abbr[^&amp;lt;&amp;gt;]*&amp;gt;[^&amp;lt;&amp;gt;]*&amp;lt;/abbr&amp;gt;&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
				n = mw.ustring.gsub(n, &amp;#039;&amp;amp;nbsp;&amp;lt;span[^&amp;lt;&amp;gt;]*&amp;gt;[^&amp;lt;&amp;gt;]*&amp;lt;/span&amp;gt;$&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
			end&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;.*(&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;&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;
		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;
function p.header(tt,Args,p_sub,N_teams,team_list,legs,prefix)&lt;br /&gt;
	local ii, team_code_ii, short_name&lt;br /&gt;
	prefix = prefix or &amp;#039;&amp;#039;&lt;br /&gt;
	legs = tonumber(Args[prefix .. &amp;#039;legs&amp;#039;]) 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;
	-- Determine if default short style is position for short name&lt;br /&gt;
	local yesno = require(&amp;#039;Module:Yesno&amp;#039;)&lt;br /&gt;
	local pos_short = yesno(Args[&amp;#039;use_pos_short&amp;#039;] or &amp;#039;no&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
	if N_teams&amp;gt;2 then&lt;br /&gt;
		-- Set the column span&lt;br /&gt;
		col_width = col_width .. &amp;#039; colspan=&amp;#039; .. legs .. &amp;#039; style=&amp;quot;border-left:2px solid #aaa;&amp;quot;&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 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;
				pos_short and ii or 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;
			tt = p_sub.colhead(tt,col_width,short_name)&lt;br /&gt;
			if legs &amp;gt; 1 then&lt;br /&gt;
				tt.count = tt.count + legs - 1&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		for ii=1,legs do&lt;br /&gt;
			local game_header = Args[prefix..&amp;#039;game&amp;#039;..ii..&amp;#039;_header&amp;#039;] or ii&lt;br /&gt;
			tt = p_sub.colhead(tt,col_width,game_header)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local tb_numplayers = tonumber(Args[&amp;#039;tb_numplayers&amp;#039;]) or 0&lt;br /&gt;
	if prefix == &amp;#039;&amp;#039; and tb_numplayers &amp;gt;= 2 then&lt;br /&gt;
		-- Add empty column header&lt;br /&gt;
		tt.count = tt.count+1&lt;br /&gt;
		table.insert(tt.tab_text,&amp;#039;! scope=&amp;quot;row&amp;quot; class=&amp;quot;unsortable&amp;quot; style=&amp;quot;background-color:white;border-top:white;border-bottom:white;border-right:white;line-width:3pt;&amp;quot;| \n&amp;#039;)&lt;br /&gt;
		tt = p.header(tt,Args,p_sub,tb_numplayers,team_list,legs,&amp;#039;tb&amp;#039;)&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,prefix)&lt;br /&gt;
	-- Note ii is the row number being shown&lt;br /&gt;
	local jj, fw, bg, result, bg_col, team_code_jj&lt;br /&gt;
	prefix = prefix or &amp;#039;&amp;#039;&lt;br /&gt;
	legs = tonumber(Args[prefix .. &amp;#039;legs&amp;#039;]) or 1&lt;br /&gt;
	local team_code_ii = team_list[ii]&lt;br /&gt;
&lt;br /&gt;
	-- Determine if backgrounds will be colored&lt;br /&gt;
	local yesno = require(&amp;#039;Module:Yesno&amp;#039;)&lt;br /&gt;
	local colorbg = yesno(Args[&amp;#039;colorbg&amp;#039;] or &amp;#039;yes&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;
	local bgcolrow_str = Args[prefix .. &amp;#039;bgcolrow_&amp;#039; .. team_code_ii] or &amp;#039;&amp;#039;&lt;br /&gt;
	if bgcolrow_str ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		for pp=1,(top_pos-1) do&lt;br /&gt;
			bgcolrow_str = mw.ustring.gsub(bgcolrow_str, &amp;#039;^([^,]*),?&amp;#039;, &amp;#039;&amp;#039;) or &amp;#039;&amp;#039;	-- Trim bgcol data prior to top_pos&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	for jj=top_pos,N_teams do&lt;br /&gt;
		local bl = &amp;#039;border-left:2px solid #aaa;&amp;#039;&lt;br /&gt;
		if ii == jj and N_teams&amp;gt;2 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;
			-- Background color for solid cell&lt;br /&gt;
			local solid_cell = Args[&amp;#039;solid_cell&amp;#039;] or &amp;#039;&amp;#039;&lt;br /&gt;
			if solid_cell ~= &amp;#039;gray&amp;#039; and solid_cell ~= &amp;#039;grey&amp;#039; and solid_cell ~= &amp;#039;lightgray&amp;#039; and solid_cell ~= &amp;#039;lightgrey&amp;#039; and solid_cell ~= &amp;#039;silver&amp;#039; then&lt;br /&gt;
				solid_cell = mw.ustring.match(solid_cell,&amp;#039;^#%x%x%x+&amp;#039;) or &amp;#039;&amp;#039;&lt;br /&gt;
			end&lt;br /&gt;
			if solid_cell ~= &amp;#039;&amp;#039; then&lt;br /&gt;
				table.insert(tt,&amp;#039;| colspan =&amp;quot;&amp;#039;..legs..&amp;#039;&amp;quot; style=&amp;quot;&amp;#039;..fw..bl..&amp;#039;background:&amp;#039;..solid_cell..&amp;#039;;&amp;quot; |\n&amp;#039;)&lt;br /&gt;
			else&lt;br /&gt;
				table.insert(tt,&amp;#039;| colspan =&amp;quot;&amp;#039;..legs..&amp;#039;&amp;quot; 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;
		elseif ii ~= jj then&lt;br /&gt;
			-- Content cells&lt;br /&gt;
			team_code_jj = team_list[jj]&lt;br /&gt;
			if bgcolrow_str ~= &amp;#039;&amp;#039; then&lt;br /&gt;
				Args[prefix .. &amp;#039;bgcol_&amp;#039; .. team_code_ii..&amp;#039;_&amp;#039;..team_code_jj] = mw.ustring.match(bgcolrow_str, &amp;#039;^([^,]*),?&amp;#039;)&lt;br /&gt;
			end&lt;br /&gt;
			local bgcol_str = Args[prefix .. &amp;#039;bgcol_&amp;#039;..team_code_ii..&amp;#039;_&amp;#039;..team_code_jj] or &amp;#039;&amp;#039;&lt;br /&gt;
			for l=1,legs do&lt;br /&gt;
				-- Get match data&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;
				m = prefix .. m&lt;br /&gt;
				result = Args[m..team_code_ii..&amp;#039;_&amp;#039;..team_code_jj] or &amp;#039;&amp;amp;nbsp;&amp;amp;nbsp;&amp;#039;&lt;br /&gt;
&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;
				if l &amp;gt; 1 or N_teams&amp;lt;=2 then&lt;br /&gt;
					bl = &amp;#039;&amp;#039;&lt;br /&gt;
				end&lt;br /&gt;
				bg = &amp;#039;background:transparent;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
				-- Background coloring&lt;br /&gt;
				if colorbg then&lt;br /&gt;
					local bg_col = mw.ustring.match(bgcol_str, &amp;#039;^([^%+]*)%+?&amp;#039;) or &amp;#039;&amp;#039;&lt;br /&gt;
					bgcol_str = mw.ustring.gsub(bgcol_str, &amp;#039;^([^%+]*)%+?&amp;#039;, &amp;#039;&amp;#039;) or &amp;#039;&amp;#039;	-- Remove bg_col from bgcol_str&lt;br /&gt;
					bg_col = mw.ustring.gsub(bg_col,&amp;#039;^%s*&amp;#039;,&amp;#039;&amp;#039;)							-- Trim starting whitespace&lt;br /&gt;
					bg_col = mw.ustring.gsub(bg_col,&amp;#039;%s*$&amp;#039;,&amp;#039;&amp;#039;)							-- Trim ending whitespace&lt;br /&gt;
					if bg_col == &amp;#039;&amp;#039; then&lt;br /&gt;
						bg_col = (l % 2 == 0 and &amp;#039;B&amp;#039;) or &amp;#039;W&amp;#039;&lt;br /&gt;
					else&lt;br /&gt;
						bg_col = mw.ustring.upper(bg_col)&lt;br /&gt;
					end&lt;br /&gt;
					if bg_col == &amp;#039;B&amp;#039; then&lt;br /&gt;
						bg = &amp;#039;background:black; color:white&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;
		bgcolrow_str = mw.ustring.gsub(bgcolrow_str, &amp;#039;^([^,]*),?&amp;#039;, &amp;#039;&amp;#039;) or &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local tb_numplayers = tonumber(Args[&amp;#039;tb_numplayers&amp;#039;]) or 0&lt;br /&gt;
	if prefix == &amp;#039;&amp;#039; and tb_numplayers &amp;gt;= 2 then&lt;br /&gt;
		-- Add empty cell&lt;br /&gt;
		table.insert(tt,&amp;#039;| style=&amp;quot;background-color:white;border-top:white;border-bottom:white;border-right:white;&amp;quot;| \n&amp;#039;)&lt;br /&gt;
		if ii &amp;lt;= tb_numplayers then&lt;br /&gt;
			tt = p.row(tt,Args,tb_numplayers,team_list,ii,ii_show,legs,&amp;#039;tb&amp;#039;)&lt;br /&gt;
		else&lt;br /&gt;
			local numtbgames = (tb_numplayers == 2) and legs or (tb_numplayers * legs)&lt;br /&gt;
			for gg=1,numtbgames do&lt;br /&gt;
				table.insert(tt,&amp;#039;| style=&amp;quot;background-color:white;border-left:white;border-top:white;border-bottom:white;border-right:white;&amp;quot;| \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;WOSlinker</name></author>
	</entry>
</feed>