<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mywikibiz.com/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://mywikibiz.com/index.php?action=history&amp;feed=atom&amp;title=Module%3ASports_results%2FChess"/>
	<link rel="alternate" type="text/html" href="https://mywikibiz.com/index.php?title=Module:Sports_results/Chess&amp;action=history"/>
	<updated>2026-06-16T06:00:43Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.3</generator>
	<entry>
		<id>https://mywikibiz.com/index.php?title=Module:Sports_results/Chess&amp;diff=479561&amp;oldid=prev</id>
		<title>Zoran: Pywikibot 6.4.0</title>
		<link rel="alternate" type="text/html" href="https://mywikibiz.com/index.php?title=Module:Sports_results/Chess&amp;diff=479561&amp;oldid=prev"/>
		<updated>2021-07-16T06:41:14Z</updated>

		<summary type="html">&lt;p&gt;Pywikibot 6.4.0&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('Module:No globals')&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 ~= '' 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 == 'noflag' or ss == 'nocountry' then&lt;br /&gt;
			n = mw.ustring.gsub(n, '%[%[[Ff][Ii][Ll][Ee]:[^%[%]]*%]%]', '')&lt;br /&gt;
			n = mw.ustring.gsub(n, '&amp;lt;span class=&amp;quot;flagicon&amp;quot;&amp;gt;[^&amp;lt;&amp;gt;]*&amp;lt;/span&amp;gt;', '')&lt;br /&gt;
			if ss == 'nocountry' then&lt;br /&gt;
				n = mw.ustring.gsub(n, '&amp;lt;abbr[^&amp;lt;&amp;gt;]*&amp;gt;[^&amp;lt;&amp;gt;]*&amp;lt;/abbr&amp;gt;', '')&lt;br /&gt;
				n = mw.ustring.gsub(n, '&amp;amp;nbsp;&amp;lt;span[^&amp;lt;&amp;gt;]*&amp;gt;[^&amp;lt;&amp;gt;]*&amp;lt;/span&amp;gt;$', '')&lt;br /&gt;
			end&lt;br /&gt;
		elseif ss == 'flag' then&lt;br /&gt;
			n = mw.ustring.gsub(n, '(&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*%[%[([^%[%]%|]*)%|[^%[%]]*%]%]', '%1%3%2')&lt;br /&gt;
			n = mw.ustring.gsub(n, '.*(&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;).*', '%1')&lt;br /&gt;
			n = mw.ustring.gsub(n, '&amp;amp;nbsp;(&amp;lt;/span&amp;gt;)', '%1')&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('(%[%[[^%[%]]*%]%])') then&lt;br /&gt;
		n = mw.ustring.gsub(n, '(%[%[[^%|%]]*%|)[^%|%]]*(%]%])', '%1' .. t .. '%2')&lt;br /&gt;
		n = mw.ustring.gsub(n, '(%[%[[^%|%]]*)(%]%])', '%1|' .. t .. '%2')&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 ''&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 ''&lt;br /&gt;
	legs = tonumber(Args[prefix .. 'legs']) or 1&lt;br /&gt;
&lt;br /&gt;
	-- Set match column width&lt;br /&gt;
	local col_width = Args['match_col_width'] or '28'&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 .. ' colspan=' .. legs .. ' style=&amp;quot;border-left:2px solid #aaa;&amp;quot;'&lt;br /&gt;
	&lt;br /&gt;
		-- Get some default values in case it doesn't start at 1&lt;br /&gt;
		local top_pos = tonumber(Args['highest_pos']) 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['short_'..team_code_ii],&lt;br /&gt;
				team_code_ii, Args['name_'..team_code_ii], Args['short_style'] or '')&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..'game'..ii..'_header'] 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['tb_numplayers']) or 0&lt;br /&gt;
	if prefix == '' 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,'! 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')&lt;br /&gt;
		tt = p.header(tt,Args,p_sub,tb_numplayers,team_list,legs,'tb')&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 ''&lt;br /&gt;
	legs = tonumber(Args[prefix .. 'legs']) 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('Module:Yesno')&lt;br /&gt;
	local colorbg = yesno(Args['colorbg'] or 'yes')&lt;br /&gt;
&lt;br /&gt;
	-- Get some default values in case it doesn't start at 1&lt;br /&gt;
	local top_pos = tonumber(Args['highest_pos']) or 1&lt;br /&gt;
&lt;br /&gt;
	local bgcolrow_str = Args[prefix .. 'bgcolrow_' .. team_code_ii] or ''&lt;br /&gt;
	if bgcolrow_str ~= '' then&lt;br /&gt;
		for pp=1,(top_pos-1) do&lt;br /&gt;
			bgcolrow_str = mw.ustring.gsub(bgcolrow_str, '^([^,]*),?', '') or ''	-- 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 = 'border-left:2px solid #aaa;'&lt;br /&gt;
		if ii == jj and N_teams&amp;gt;2 then&lt;br /&gt;
			-- Solid cell&lt;br /&gt;
			fw = 'font-weight:' .. (ii==ii_show and 'bold' or 'normal') .. ';'&lt;br /&gt;
			bg = 'background:transparent;'&lt;br /&gt;
&lt;br /&gt;
			-- Background color for solid cell&lt;br /&gt;
			local solid_cell = Args['solid_cell'] or ''&lt;br /&gt;
			if solid_cell ~= 'gray' and solid_cell ~= 'grey' and solid_cell ~= 'lightgray' and solid_cell ~= 'lightgrey' and solid_cell ~= 'silver' then&lt;br /&gt;
				solid_cell = mw.ustring.match(solid_cell,'^#%x%x%x+') or ''&lt;br /&gt;
			end&lt;br /&gt;
			if solid_cell ~= '' then&lt;br /&gt;
				table.insert(tt,'| colspan =&amp;quot;'..legs..'&amp;quot; style=&amp;quot;'..fw..bl..'background:'..solid_cell..';&amp;quot; |\n')&lt;br /&gt;
			else&lt;br /&gt;
				table.insert(tt,'| colspan =&amp;quot;'..legs..'&amp;quot; style=&amp;quot;'..fw..bl..bg..'&amp;quot; | &amp;amp;mdash;\n')&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 ~= '' then&lt;br /&gt;
				Args[prefix .. 'bgcol_' .. team_code_ii..'_'..team_code_jj] = mw.ustring.match(bgcolrow_str, '^([^,]*),?')&lt;br /&gt;
			end&lt;br /&gt;
			local bgcol_str = Args[prefix .. 'bgcol_'..team_code_ii..'_'..team_code_jj] or ''&lt;br /&gt;
			for l=1,legs do&lt;br /&gt;
				-- Get match data&lt;br /&gt;
				local m = (legs == 1) and 'match_' or 'match' .. l .. '_'&lt;br /&gt;
				m = prefix .. m&lt;br /&gt;
				result = Args[m..team_code_ii..'_'..team_code_jj] or '&amp;amp;nbsp;&amp;amp;nbsp;'&lt;br /&gt;
&lt;br /&gt;
				-- Set bolding and background&lt;br /&gt;
				fw = 'font-weight:' .. ((ii==ii_show or jj == ii_show) and 'bold' or 'normal') .. ';'&lt;br /&gt;
				if l &amp;gt; 1 or N_teams&amp;lt;=2 then&lt;br /&gt;
					bl = ''&lt;br /&gt;
				end&lt;br /&gt;
				bg = 'background:transparent;'&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, '^([^%+]*)%+?') or ''&lt;br /&gt;
					bgcol_str = mw.ustring.gsub(bgcol_str, '^([^%+]*)%+?', '') or ''	-- Remove bg_col from bgcol_str&lt;br /&gt;
					bg_col = mw.ustring.gsub(bg_col,'^%s*','')							-- Trim starting whitespace&lt;br /&gt;
					bg_col = mw.ustring.gsub(bg_col,'%s*$','')							-- Trim ending whitespace&lt;br /&gt;
					if bg_col == '' then&lt;br /&gt;
						bg_col = (l % 2 == 0 and 'B') or 'W'&lt;br /&gt;
					else&lt;br /&gt;
						bg_col = mw.ustring.upper(bg_col)&lt;br /&gt;
					end&lt;br /&gt;
					if bg_col == 'B' then&lt;br /&gt;
						bg = 'background:black; color:white';&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
				table.insert(tt,'| style=&amp;quot;white-space:nowrap;'..fw..bl..bg..'&amp;quot; |'..result..'\n')&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		bgcolrow_str = mw.ustring.gsub(bgcolrow_str, '^([^,]*),?', '') or ''&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local tb_numplayers = tonumber(Args['tb_numplayers']) or 0&lt;br /&gt;
	if prefix == '' and tb_numplayers &amp;gt;= 2 then&lt;br /&gt;
		-- Add empty cell&lt;br /&gt;
		table.insert(tt,'| style=&amp;quot;background-color:white;border-top:white;border-bottom:white;border-right:white;&amp;quot;| \n')&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,'tb')&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,'| style=&amp;quot;background-color:white;border-left:white;border-top:white;border-bottom:white;border-right:white;&amp;quot;| \n')&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>Zoran</name></author>
	</entry>
</feed>