<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ar">
	<id>https://3rabica.org/index.php?action=history&amp;feed=atom&amp;title=%D9%88%D8%AD%D8%AF%D8%A9%3ASports_results</id>
	<title>وحدة:Sports results - تاريخ المراجعة</title>
	<link rel="self" type="application/atom+xml" href="https://3rabica.org/index.php?action=history&amp;feed=atom&amp;title=%D9%88%D8%AD%D8%AF%D8%A9%3ASports_results"/>
	<link rel="alternate" type="text/html" href="https://3rabica.org/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Sports_results&amp;action=history"/>
	<updated>2026-06-06T17:16:51Z</updated>
	<subtitle>تاريخ التعديل لهذه الصفحة في الويكي</subtitle>
	<generator>MediaWiki 1.43.7</generator>
	<entry>
		<id>https://3rabica.org/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Sports_results&amp;diff=1189&amp;oldid=prev</id>
		<title>عبد العزيز في 15:00، 27 مارس 2021</title>
		<link rel="alternate" type="text/html" href="https://3rabica.org/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Sports_results&amp;diff=1189&amp;oldid=prev"/>
		<updated>2021-03-27T15:00:47Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحة جديدة&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;Module:No globals&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;
	-- Declare locals&lt;br /&gt;
	local Args = frame.args&lt;br /&gt;
	local N_teams = 0&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 ii, ii_fw, bg_col, team_name, team_code_ii&lt;br /&gt;
	&lt;br /&gt;
	-- Edit links if requested&lt;br /&gt;
	local template_name = Args[&amp;#039;template_name&amp;#039;] 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 frame:expandTemplate{ title = &amp;#039;navbar&amp;#039;, &lt;br /&gt;
			args = { mini=1, style=&amp;#039;float:right&amp;#039;, template_name} }&lt;br /&gt;
	&lt;br /&gt;
	-- Load some other modules&lt;br /&gt;
	local p_sub = require(&amp;#039;وحدة:جدول_رياضي/فرعية&amp;#039;)&lt;br /&gt;
	&lt;br /&gt;
	-- Read in number of consecutive teams (ignore entries after skipping a spot)&lt;br /&gt;
	while Args[&amp;#039;team&amp;#039;..N_teams+1] ~= nil 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;
	&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;
	-- 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;&amp;quot;\n&amp;#039;) &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;)	&lt;br /&gt;
	-- Other columns passed to subfunction&lt;br /&gt;
	t_return = p.header(t_return,Args,p_sub,N_teams,team_list)&lt;br /&gt;
	t = t_return.tab_text&lt;br /&gt;
	&lt;br /&gt;
	-- Now create individual rows&lt;br /&gt;
	for ii=1,N_teams 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:right;&amp;#039;&lt;br /&gt;
		if ii and ii == ii_show then&lt;br /&gt;
			ii_style = ii_style .. &amp;#039;font-weight:bold;&amp;#039;&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; style=&amp;quot;&amp;#039; &lt;br /&gt;
			.. ii_style ..&amp;#039;&amp;quot;| &amp;#039;..team_name..&amp;#039;\n&amp;#039;)	-- Position number&lt;br /&gt;
		&lt;br /&gt;
		-- Then individual results&lt;br /&gt;
		t = p.row(t,Args,N_teams,team_list,ii,ii_show)&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;]			or &amp;#039;unknown&amp;#039;&lt;br /&gt;
	local start_date = Args[&amp;#039;start_date&amp;#039;] 	or &amp;#039;unknown&amp;#039;&lt;br /&gt;
	local source = Args[&amp;#039;source&amp;#039;]			or frame:expandTemplate{ title = &amp;#039;citation needed&amp;#039;, 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;تم التحديث لتتناسب مع المطابقات &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;سيتم لعب المباراة الأولى في &amp;#039;..start_date..&amp;#039;. &amp;#039;)&lt;br /&gt;
	else&lt;br /&gt;
		table.insert(t_footer,&amp;#039;تم التحديث لتتناسب مع المباراة التي لعبت في  &amp;#039;..update..&amp;#039;. &amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	table.insert(t_footer,&amp;#039;مصدر: &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, &amp;#039;&amp;lt;br&amp;gt;الألوان: الأزرق = فوز الفريق المضيف. الأصفر = التعادل ؛ الأحمر = فوز الفريق الضيف.&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	if (Args[&amp;#039;a_note&amp;#039;] or &amp;#039;&amp;#039;) ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		table.insert(t_footer, &amp;#039;&amp;lt;br&amp;gt;للمباريات القادمة ، في إشارة إلى وجود مقال عن المباراة.&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	-- As reflist size text&lt;br /&gt;
	t_footer = &amp;#039;&amp;lt;div class=&amp;quot;reflist&amp;quot;&amp;gt;&amp;#039;..table.concat(t_footer)..&amp;#039;&amp;lt;/div&amp;gt;&amp;#039;&lt;br /&gt;
	-- Add footer to main text table&lt;br /&gt;
	table.insert(t,t_footer)&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(t)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Other functions&lt;br /&gt;
local function get_short_name(s, t, n)&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;
	-- 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;
local function get_score_background(s)&lt;br /&gt;
	local s1, s2&lt;br /&gt;
	-- Define the colouring&lt;br /&gt;
	local wc, lc, tc = &amp;#039;#BBF3FF&amp;#039;, &amp;#039;#FFBBBB&amp;#039;, &amp;#039;#FFFFBB&amp;#039;&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;
&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*(%[%[[^%[%]]*%|[%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)&lt;br /&gt;
	local ii, team_code_ii, short_name&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 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])&lt;br /&gt;
		tt = p_sub.colhead(tt,col_width,short_name)&lt;br /&gt;
	end&lt;br /&gt;
	&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)&lt;br /&gt;
	-- Note ii is the row number being shown&lt;br /&gt;
	local jj, fw, bg, result, team_code_ii, team_code_jj&lt;br /&gt;
	local cell_bold = false&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;
	&lt;br /&gt;
	for jj=top_pos,N_teams do&lt;br /&gt;
		if ii == jj then&lt;br /&gt;
			-- Solid cell&lt;br /&gt;
			if ii==ii_show then cell_bold = true else cell_bold = false end&lt;br /&gt;
			fw = cell_bold and &amp;#039;font-weight: bold;&amp;#039; or &amp;#039;font-weight: normal;&amp;#039;&lt;br /&gt;
			bg = &amp;#039;background-color:transparent;&amp;#039;&lt;br /&gt;
			table.insert(tt,&amp;#039;| style=&amp;quot;&amp;#039;..fw..bg..&amp;#039;&amp;quot; | &amp;amp;mdash;\n&amp;#039;)&lt;br /&gt;
		else&lt;br /&gt;
			-- Content cell&lt;br /&gt;
			-- Set bolding and background&lt;br /&gt;
			if ii==ii_show or jj == ii_show then cell_bold = true else cell_bold = false end&lt;br /&gt;
			fw = cell_bold and &amp;#039;font-weight: bold;&amp;#039; or &amp;#039;font-weight: normal;&amp;#039;&lt;br /&gt;
			bg = &amp;#039;background-color:transparent;&amp;#039;&lt;br /&gt;
			&lt;br /&gt;
			-- Now for the actual result&lt;br /&gt;
			team_code_jj = team_list[jj]&lt;br /&gt;
			result = Args[&amp;#039;match_&amp;#039;..team_code_ii..&amp;#039;_&amp;#039;..team_code_jj] or &amp;#039;&amp;#039;&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;
				bg = &amp;#039;background-color:&amp;#039; .. get_score_background(result) .. &amp;#039;;&amp;#039;&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(tt,&amp;#039;| style=&amp;quot;white-space:nowrap;&amp;#039;..fw..bg..&amp;#039;&amp;quot; |&amp;#039;..result..&amp;#039;\n&amp;#039;)&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>عبد العزيز</name></author>
	</entry>
</feed>