Ir al contenido

Módulo:Sports results

De Wikipedia, la enciclopedia libre

Este módulo basado en Lua está diseñado para crear tablas de resultados de los partidos. Tenga en cuenta que este módulo se usa ampliamente, por lo que prueba rigurosamente los posibles cambios y asegúrese de que exista consenso antes de implementar cambios importantes. También tenga en cuenta que el módulo se llama desde Módulo:Sports table y compruebe posibles problemas antes de realizar cambios. El resto de esta documentación explica cómo usar este módulo en un artículo o plantilla, consulte la tabla de contenido para asuntos específicos.

Uso

La plantilla se puede usar de la siguiente manera:

Lo que escribes
{{#invoke:Sports results|main
|update=1 de enero de 1900
|source=[https://en.wikipedia.org/wiki/Main_Page Wikipedia]
|showteam=CCC
|team1=FDT |team2=BBB |team3=CCC |team4=DDD |team5=EEE

|name_FDT=[[FIFA World Cup Dream Team]]  |short_FDT=[[FIFA World Cup Dream Team|FDT]]
|name_BBB=Team 2                         |short_BBB=T2
|name_CCC=Team 3                         |short_CCC=T3
|name_DDD=DDD F.C.                       |short_DDD=DDD
|name_EEE={{Self-d|GIB}}                 |short_EEE={{bandera|Gibraltar}}

|match_FDT_BBB=1–0
|match_FDT_CCC=0–1
|match_FDT_DDD=<small>16 Nov '14</small>
|match_FDT_EEE=<small>3 Sep '15</small>

|match_BBB_FDT=B–F
|match_BBB_CCC=<small>3 Sep '15</small>
|match_BBB_DDD=B–D
|match_BBB_EEE=<small>3 Sep '15</small>

|match_CCC_FDT=<small>16 Nov '14</small>
|match_CCC_BBB=C–B
|match_CCC_DDD=<small>16 Nov '14</small>
|match_CCC_EEE=C–E

|match_DDD_FDT=D–F
|match_DDD_BBB=<small>3 Sep '15</small>
|match_DDD_CCC=D–C
|match_DDD_EEE=<small>3 Sep '15</small>

|match_EEE_FDT=E–F
|match_EEE_BBB=9–5
|match_EEE_CCC=<small>16 Nov '14</small>
|match_EEE_DDD=E–D
}}
Como se ve
Local \ Visitante FDT T2 T3 DDD Bandera de Gibraltar
FIFA World Cup Dream Team 1–0 0–1 16 Nov '14 3 Sep '15
Team 2 B–F 3 Sep '15 B–D 3 Sep '15
Team 3 16 Nov '14 C–B 16 Nov '14 C–E
DDD F.C. D–F 3 Sep '15 D–C 3 Sep '15
Gibraltar GIBBandera de Gibraltar E–F 9–5 16 Nov '14 E–D
Actualizado a los partidos jugados el 1 de enero de 1900. Fuente: Wikipedia

El comando principal es {{#invoke:Sports results|main}}, que llama al módulo y establece la estructura básica. Luego enumeras el orden en que los equipos están listados como |team1=, |team2=, etc para todos los equipos que necesites en la tabla. Si estableces |showteam= a un equipo, los resultados de ese equipo se destacan como en el ejemplo. La visualización de los nombres de los equipos para el equipo TTT se rigen por |name_TTT= y |short_TTT= para los encabezados de fila y columna, respectivamente. Los resultados para el partido TTT vs. SSS pueden ser introducidos por |match_TTT_SSS=. La tabla se construye de esta manera, los partidos futuros se pueden enumerar con su fecha o se pueden dejar en blanco.

La fuente está controlada por |source=. La fecha de actualización se puede fijar por |update=fecha cuando la temporada está activa; se puede eliminar después de la temporada con |update=completo y se puede configurar para una fecha de inicio futura utilizando |update=futuro y configurando la fecha de inicio con |start_date=.

El ancho de las columnas se puede establecer por |match_col_width=.

Otro ejemplo es:

Lo que escribes
{{#invoke:Sports results|main

|team1=CZE |team2=ISL |team3=KAZ |team4=LVA |team5=NED |team6=TUR

|name_CZE={{Self-d|CZE}} |short_CZE={{bandera4|CZE}}
|name_ISL={{Self-d|ISL}} |short_ISL={{bandera4|ISL}}
|name_KAZ={{Self-d|KAZ}} |short_KAZ={{bandera4|KAZ}}
|name_LVA={{Self-d|LVA}} |short_LVA={{bandera4|LVA}}
|name_NED={{Self-d|NED}} |short_NED={{bandera4|NED}}
|name_TUR={{Self-d|TUR}} |short_TUR={{bandera4|TUR}}

|match_CZE_ISL=[[Grupo A de la Clasificación para la Eurocopa 2016#República Checa vs Islandia|<small>16 Nov '14</small>]]
|match_CZE_KAZ=[[Grupo A de la Clasificación para la Eurocopa 2016#República Checa vs Kazajistán|<small>3 Sep '15</small>]]
|match_CZE_LVA=[[Grupo A de la Clasificación para la Eurocopa 2016#República Checa vs Letonia|<small>28 Mar '15</small>]]
|match_CZE_NED=[[Grupo A de la Clasificación para la Eurocopa 2016#República Checa vs Países Bajos|2–1]]
|match_CZE_TUR=[[Grupo A de la Clasificación para la Eurocopa 2016#República Checa vs Turquía|<small>10 Oct '15</small>]]

|match_ISL_CZE=[[Grupo A de la Clasificación para la Eurocopa 2016#Islandia vs República Checa|<small>12 Jun '15</small>]]
|match_ISL_KAZ=[[Grupo A de la Clasificación para la Eurocopa 2016#Islandia vs Kazajistán|<small>6 Sep '15</small>]]
|match_ISL_LVA=[[Grupo A de la Clasificación para la Eurocopa 2016#Islandia vs Letonia|<small>10 Oct '15</small>]]
|match_ISL_NED=[[Grupo A de la Clasificación para la Eurocopa 2016#Islandia vs Países Bajos|2–0]]
|match_ISL_TUR=[[Grupo A de la Clasificación para la Eurocopa 2016#Islandia vs Turquía|3–0]]

|match_KAZ_CZE=[[Grupo A de la Clasificación para la Eurocopa 2016#Kazajistán vs República Checa|2–4]]
|match_KAZ_ISL=[[Grupo A de la Clasificación para la Eurocopa 2016#Kazajistán vs Islandia|<small>28 Mar '15</small>]]
|match_KAZ_LVA=[[Grupo A de la Clasificación para la Eurocopa 2016#Kazajistán vs Letonia|0–0]]
|match_KAZ_NED=[[Grupo A de la Clasificación para la Eurocopa 2016#Kazajistán vs Países Bajos|<small>10 Oct '15</small>]]
|match_KAZ_TUR=[[Grupo A de la Clasificación para la Eurocopa 2016#Kazajistán vs Turquía|<small>12 Jun '15</small>]]

|match_LVA_CZE=[[Grupo A de la Clasificación para la Eurocopa 2016#Letonia vs República Checa|<small>6 Sep '15</small>]]
|match_LVA_ISL=[[Grupo A de la Clasificación para la Eurocopa 2016#Letonia vs Islandia|0–3]]
|match_LVA_KAZ=[[Grupo A de la Clasificación para la Eurocopa 2016#Letonia vs Kazajistán|<small>13 Oct '15</small>]]
|match_LVA_NED=[[Grupo A de la Clasificación para la Eurocopa 2016#Letonia vs Países Bajos|<small>12 Jun '15</small>]]
|match_LVA_TUR=[[Grupo A de la Clasificación para la Eurocopa 2016#Letonia vs Turquía|1–1]]

|match_NED_CZE=[[Grupo A de la Clasificación para la Eurocopa 2016#Países Bajos vs República Checa|<small>13 Oct '15</small>]]
|match_NED_ISL=[[Grupo A de la Clasificación para la Eurocopa 2016#Países Bajos vs Islandia|<small>3 Sep '15</small>]]
|match_NED_KAZ=[[Grupo A de la Clasificación para la Eurocopa 2016#Países Bajos vs Kazajistán|3–1]]
|match_NED_LVA=[[Grupo A de la Clasificación para la Eurocopa 2016#Países Bajos vs Letonia|<small>16 Nov '14</small>]]
|match_NED_TUR=[[Grupo A de la Clasificación para la Eurocopa 2016#Países Bajos vs Turquía|<small>28 Mar '15</small>]]

|match_TUR_CZE=[[Grupo A de la Clasificación para la Eurocopa 2016#Turquía vs República Checa|1–2]]
|match_TUR_ISL=[[Grupo A de la Clasificación para la Eurocopa 2016#Turquía vs Islandia|<small>13 Oct '15</small>]]
|match_TUR_KAZ=[[Grupo A de la Clasificación para la Eurocopa 2016#Turquía vs Kazajistán|<small>16 Nov '14</small>]]
|match_TUR_LVA=[[Grupo A de la Clasificación para la Eurocopa 2016#Turquía vs Letonia|<small>3 Sep '15</small>]]
|match_TUR_NED=[[Grupo A de la Clasificación para la Eurocopa 2016#Turquía vs Países Bajos|<small>6 Sep '15</small>]]
}}
Como se ve
Local \ Visitante Bandera de República Checa Bandera de Islandia Bandera de Kazajistán Bandera de Letonia Bandera de los Países Bajos Bandera de Turquía
República Checa CZEBandera de República Checa 16 Nov '14 3 Sep '15 28 Mar '15 2–1 10 Oct '15
Islandia ISLBandera de Islandia 12 Jun '15 6 Sep '15 10 Oct '15 2–0 3–0
Kazajistán KAZBandera de Kazajistán 2–4 28 Mar '15 0–0 10 Oct '15 12 Jun '15
Letonia LVABandera de Letonia 6 Sep '15 0–3 13 Oct '15 12 Jun '15 1–1
Países Bajos NEDBandera de los Países Bajos 13 Oct '15 3 Sep '15 3–1 16 Nov '14 28 Mar '15
Turquía TURBandera de Turquía 1–2 13 Oct '15 16 Nov '14 3 Sep '15 6 Sep '15
Actualizado a los partidos jugados el fecha desconocida. Fuente: [cita requerida]

Colores Victoria/Empate/Derrota

El color de Victoria/Empate/Derrota puede ser configurado a través de |matches_style=FBR (fútbol) y a través de |matches_style=BSR (baloncesto).

Lo que escribes
{{#invoke:Sports results|main
|source = 
|update=22 de abril de 2018
|matches_style = FBR
|team1=CER |team2=DAV |team3=GLC |team4=JPV |team5=KAY |team6=STA

|name_CER=[[Ceres–Negros F.C.|Ceres–Negros]]
|name_DAV=[[Davao Aguilas F.C.|Davao Aguilas]]
|name_GLC=[[Global Cebu F.C.|Global Cebu]]
|name_JPV=[[JPV Marikina F.C.|JPV Marikina]]
|name_KAY=[[Kaya F.C.|Kaya–Iloilo]]
|name_STA={{nowrap|[[Stallion Laguna F.C.|Stallion Laguna]]}}

|match_CER_DAV={{small|{{small|23 May}}}}
|match_CER_GLC={{small|{{small|30 May}}}}
|match_CER_JPV={{small|{{small|20 Jun}}}}
|match_CER_KAY=2–1
|match_CER_STA={{small|{{small|2 Jun}}}}
|match_DAV_CER={{small|{{small|2 May}}}}
|match_DAV_GLC={{small|{{small|20 Jun}}}}
|match_DAV_JPV=3–2
|match_DAV_KAY=2–2
|match_DAV_STA={{small|{{small|6 May}}}}
|match_GLC_CER=0–2
|match_GLC_DAV=2–2
|match_GLC_JPV={{small|{{small|27 May}}}}
|match_GLC_KAY={{small|{{small|23 May}}}}
|match_GLC_STA=1–2
|match_JPV_CER=0–3
|match_JPV_DAV={{small|{{small|9 Jun}}}}
|match_JPV_GLC=2–1
|match_JPV_KAY={{small|{{small|5 May}}}}
|match_JPV_STA={{small|{{small|19 May}}}}
|match_KAY_CER={{small|{{small|12 May}}}}
|match_KAY_DAV={{small|{{small|20 May}}}}
|match_KAY_GLC={{small|{{small|2 May}}}}
|match_KAY_JPV=1–0
|match_KAY_STA=4–1
|match_STA_CER={{small|{{small|26 May}}}}
|match_STA_DAV=0–1
|match_STA_GLC={{small|{{small|12 May}}}}
|match_STA_JPV=1–2
|match_STA_KAY=3–1
}}
Como se ve
Local \ Visitante CER DAV GLC JPV KAY STA
Ceres–Negros 23 May 30 May 20 Jun 2–1 2 Jun
Davao Aguilas 2 May 20 Jun 3–2 2–2 6 May
Global Cebu 0–2 2–2 27 May 23 May 1–2
JPV Marikina 0–3 9 Jun 2–1 5 May 19 May
Kaya–Iloilo 12 May 20 May 2 May 1–0 4–1
Stallion Laguna 26 May 0–1 12 May 1–2 3–1
Actualizado a los partidos jugados el 22 de abril de 2018. Fuente:
Colores: Azul = victoria del equipo local; Amarillo = empate; Rojo = victoria del equipo visitante.

-- Module to build results cross-tables for standings in Sports
-- See documentation for details
 
require('Module:No globals')

local p = {}
 
-- Main function
function p.main(frame)
	-- Declare locals
	local Args = frame.args
	local N_teams = 0
	local t = {}
	local t_footer = {}
	local t_return = {}
	local team_list = {}
	local notes_exist = false
	local ii, ii_fw, bg_col, team_name, team_code_ii
	
	-- Edit links if requested
	local template_name = Args['template_name'] or ''
	local edit_links = template_name == '' and '' 
		or frame:expandTemplate{ title = 'navbar', 
			args = { mini=1, style='float:right', template_name} }
	
	-- Load some other modules
	local p_sub = require('Módulo:Sports table/sub')
	
	-- Read in number of consecutive teams (ignore entries after skipping a spot)
	while Args['team'..N_teams+1] ~= nil do
		N_teams = N_teams+1
		-- Sneakily add it twice to the team_list parameter, once for the actual
		-- ranking, the second for position lookup in sub-tables
		-- This is possible because Lua allows both numbers and strings as indices.
		team_list[N_teams] = Args['team'..N_teams] -- i^th entry is team X
		team_list[Args['team'..N_teams]] = N_teams -- team X entry is position i
	end
	
	-- Get team to show
	local ii_show = team_list[Args['showteam']] -- nil if non-existant
	
	-- Set the font size
	local font_size=Args['font_size'] or '100%'
	
	-- Create header
	-- Open table
	table.insert(t,'{|class="wikitable plainrowheaders" style="text-align:center;font-size:'..font_size..';"\n') 
	-- First column
	t_return.count = 0 			-- Dummy parameter, using subfunction call seems best at this point because both module are intertwined
	t_return.tab_text = t		-- Actual text
	t_return = p_sub.colhead(t_return,'auto', edit_links .. ' Local \\ Visitante')	
	-- Other columns passed to subfunction
	t_return = p.header(t_return,Args,p_sub,N_teams,team_list)
	t = t_return.tab_text
	
	-- Random value used for uniqueness
	math.randomseed( os.clock() * 10^8 )
	local rand_val = math.random()
	
	local note_string, note_id
	local note_id_list = {}
	
	-- Now create individual rows
	for ii=1,N_teams do
		-- Get team info
		team_code_ii = team_list[ii]
		team_name = Args['name_'..team_code_ii]	or Args['nombre_'..team_code_ii]		 	or team_code_ii
		local ii_style = 'text-align:right;'
		if ii and ii == ii_show then
			ii_style = ii_style .. 'font-weight:bold;'
		end
		-- Team names
		table.insert(t,'|- \n')	-- New row
		table.insert(t,'! scope="row" style="' 
			.. ii_style ..'"| '..team_name..'\n')	-- Position number

		-- Now include note to match results if needed 
		for jj=1,N_teams do
			local team_code_jj = team_list[jj]
			if ii == jj then
				-- Nothing
			else
				local match_note = (Args['match_'..team_code_ii..'_'..team_code_jj..'_note'] or Args['partido_'..team_code_ii..'_'..team_code_jj..'_nota'])
				if match_note then
					notes_exist = true
					-- Only when it exist
					-- First check for existence of reference for note
					if not (Args['note_'..match_note] or Args['match_'..match_note..'_note']) then
						-- It's the entry
						note_id = '"table_note_'..team_code_ii..'_'..team_code_jj..rand_val..'"' -- Add random end for unique ID if more tables are present on article (which might otherwise share an ID)
						note_id_list[team_code_ii..'_'..team_code_jj] = note_id
						
						note_string = frame:expandTemplate{ title = 'efn', args = { group='Table_notes', name=note_id,  match_note} }
					else 
						-- Check for existence elsewhere
						note_local_num = team_list[match_note] or ii_end + 1
						if note_id_list[match_note] or ((note_local_num >= ii_start) and (note_local_num <= ii_end)) then
							-- It exists
							note_id = '"table_note_'..match_note..rand_val..'"' -- Identifier
							note_string = frame:extensionTag{ name = 'ref', args = { group = 'lower-alpha', name = note_id} }
						else
							-- Now define the identifier for this
							note_id = '"table_note_'..match_note..rand_val..'"' -- Add random end for unique ID
							note_id_list[match_note] = note_id
							-- Call refn template
							note_string = frame:expandTemplate{ title = 'efn', args = { group='Table_notes', name=note_id, Args['note_'..match_note]} }
						end
					end

					-- Now append this to the match result string
					Args['partido_'..team_code_ii..'_'..team_code_jj] = Args['partido_'..team_code_ii..'_'..team_code_jj]..note_string
				end
			end
		end
		
		-- Then individual results
		t = p.row(t,Args,N_teams,team_list,ii,ii_show)
	end
	
	-- Close table
	table.insert(t, '|}\n')
	
	-- Get info for footer
	local update = Args['update']			or 'fecha desconocida'
	local start_date = Args['start_date'] 	or 'fecha desconocida'
	local source = Args['source']			or frame:expandTemplate{ title = 'cita requerida', args = { reason='No source parameter defined', date=os.date('%B %Y') } }
	
	-- Create footer text
	-- Date updating
	local matches_text = Args['matches_text'] or 'partidos'
	if string.lower(update)=='completo' then
		-- Do nothing
	elseif update=='' then
		-- Empty parameter
		table.insert(t_footer,'Actualizado a los '..matches_text..' jugados en fecha desconocida. ')
	elseif string.lower(update)=='futuro' then
		-- Future start date
		table.insert(t_footer,'Los primeros '..matches_text..' se disputarán el '..start_date..'. ')
	else
		table.insert(t_footer,'Actualizado a los '..matches_text..' jugados el '..update..'. ')
	end
	table.insert(t_footer,'Fuente: '..source)
	if (Args['matches_style'] or '') == 'FBR' then
		table.insert(t_footer, '<br />Colores: Azul = victoria del equipo local; Amarillo = empate; Rojo = victoria del equipo visitante.')
	elseif (Args['matches_style'] or '') == 'BSR' then
		table.insert(t_footer, '<br />Colores: Azul = victoria del equipo local; Rojo = victoria del equipo visitante.')
	end
	if (Args['a_note'] or '') ~= '' then
		table.insert(t_footer, '<br />Para los próximos partidos, la a indica que existe un artículo sobre el partido.')
	end
	if (Args['ot_note'] or '') ~= '' then
		table.insert(t_footer, '<br />Los partidos con el fondo en un color más claro se decidieron tras la prórroga.')
	end
	
	-- Add notes (if applicable)
	if notes_exist then
		table.insert(t_footer,'<br>Notes:')
		-- As reflist size text
		t_footer = '<div class="reflist">'..table.concat(t_footer)..'</div>'
		t_footer = t_footer..frame:expandTemplate{ title = 'notelist', args = { group='Table_notes'} }
	else
		-- As reflist size text
		t_footer = '<div class="reflist">'..table.concat(t_footer)..'</div>'
	end
	
	-- Add footer to main text table
	table.insert(t,t_footer)

	return table.concat(t)
end

-- Other functions
local function get_short_name(s, t, n)
	-- return short name if defined
	if s and s ~= '' then 
		return s 
	end
	-- replace link text in name with team abbr if possible
	if n and t and n:match('(%[%[[^%[%]]*%]%])') then
		n = mw.ustring.gsub(n, '(%[%[[^%|%]]*%|)[^%|%]]*(%]%])', '%1' .. t .. '%2')
		n = mw.ustring.gsub(n, '(%[%[[^%|%]]*)(%]%])', '%1|' .. t .. '%2')
		return n
	end
	-- nothing worked, so just return the unlinked team abbr
	return t or ''
end

local function get_score_background(s, c)
	local s1, s2
	-- Define the colouring
	local wc, lc, tc
	if c == 'level2' then
	wc, lc, tc = '#CCF9FF', '#FFCCCC', '#FFFFCC' -- blue2, red2, yellow2
	elseif c == 'level3' then
	wc, lc, tc = '#DDFCFF', '#FFDDDD', '#FFFFDD' -- blue3, red3, yellow3
	elseif c == 'level4' then
	wc, lc, tc = '#EEFFFF', '#FFEEEE', '#FFFFEE' -- blue4, red4, yellow4
	else
	wc, lc, tc = '#BBF3FF', '#FFBBBB', '#FFFFBB' -- blue1, red1, yellow1
	end

	-- delink if necessary	
	if s:match('^%s*%[%[[^%[%]]*%|([^%[%]]*)%]%]') then
		s = s:match('^%s*%[%[[^%[%]]*%|([^%[%]]*)%]%]')
	end

	-- get the scores
	s1 = tonumber(mw.ustring.gsub( s or '', 
		'^%s*([%d][%d]*)%s*–%s*([%d][%d]*).*', '%1' ) or '') or ''
	s2 = tonumber(mw.ustring.gsub( s or '', 
		'^%s*([%d][%d]*)%s*–%s*([%d][%d]*).*', '%2' ) or '') or ''
	
	-- return colouring if possible
	if s1 ~= '' and s2 ~= '' then
		return (s1 > s2) and wc or ((s2 > s1) and lc or tc)
	else
		return 'transparent'
	end
end

local function format_score(s)
	s = mw.ustring.gsub(s or '', '^%s*([%d]+)%s*[–−—%-]%s*([%d]+)', '%1–%2')
	s = mw.ustring.gsub(s, '^%s*([%d]+)%s*&[MmNn][Dd][Aa][Ss][Hh];%s*([%d]+)', '%1–%2')
	s = mw.ustring.gsub(s, '^%s*(%[%[[^%[%]]*%|[%d]+)%s*%-%s*([%d]+)', '%1–%2')
	s = mw.ustring.gsub(s, '^%s*(%[%[[^%[%]]*%|[%d]+)%s*&[MmNn][Dd][Aa][Ss][Hh];%s*([%d]+)', '%1–%2')
	return s
end

function p.header(tt,Args,p_sub,N_teams,team_list)
	local ii, team_code_ii, short_name
	
	-- Set match column width
	local col_width = Args['match_col_width'] or Args['anchura_columna_partidos'] or '28'
	
	-- Get some default values in case it doesn't start at 1
	local top_pos = tonumber(Args['highest_pos']) or 1
	
	for ii=top_pos,N_teams do
		team_code_ii = team_list[ii]
		short_name = get_short_name(Args['short_'..team_code_ii] or Args['simplificado_'..team_code_ii], 
			team_code_ii, Args['name_'..team_code_ii] or Args['nombre_'..team_code_ii])
		tt = p_sub.colhead(tt,col_width,short_name)
	end
	
	return tt
end

function p.row(tt,Args,N_teams,team_list,ii,ii_show)
	-- Note ii is the row number being shown
	local jj, fw, bg, result, result_extra, team_code_ii, team_code_jj
	local cell_bold = false
	
	-- Set score cell style
	local matches_style = Args['matches_style'] or ''
	
	team_code_ii = team_list[ii]
	
	-- Get some default values in case it doesn't start at 1
	local top_pos = tonumber(Args['highest_pos']) or 1
	
	for jj=top_pos,N_teams do
		
		team_code_jj = team_list[jj]
		result = Args['match_'..team_code_ii..'_'..team_code_jj] or Args['partido_'..team_code_ii..'_'..team_code_jj] or ''
		result_extra = Args['result_'..team_code_ii..'_'..team_code_jj] or ''
	
		if ii == jj or result == 'null' then
			-- Solid cell
			if ii==ii_show then cell_bold = true else cell_bold = false end
			fw = cell_bold and 'font-weight: bold;' or 'font-weight: normal;'
			bg = 'background-color:#f8f9fa;'
			
			-- Grey background color for solid cell
			if Args['solid_cell'] == 'grey' then
			table.insert(tt,'| style="'..fw..'background-color:#BBBBBB;" |\n')
			else
			table.insert(tt,'| style="'..fw..bg..'" | &mdash;\n')
			end
		else
			-- Content cell
			-- Set bolding and background
			if ii==ii_show or jj == ii_show then cell_bold = true else cell_bold = false end
			fw = cell_bold and 'font-weight: bold;' or 'font-weight: normal;'
			bg = 'background-color:#f8f9fa;'
			
			-- Reformat dashes
			if result ~= '' then
				result = format_score(result)
			end
			-- Background coloring if enabled
			if matches_style == 'FBR' and result ~= '' then
				if result_extra == 'OT' then
					bg = 'background-color:' .. get_score_background(result,'level2') .. ';'
				elseif result_extra == 'PK' then
					bg = 'background-color:' .. get_score_background(result,'level3') .. ';'
				else
					bg = 'background-color:' .. get_score_background(result,'') .. ';'
				end
			elseif matches_style == 'BSR' and result ~= '' then
				if result_extra == 'OT' then
					bg = 'background-color:' .. get_score_background(result,'level3') .. ';'
				else
					bg = 'background-color:' .. get_score_background(result,'') .. ';'
				end
			end
			table.insert(tt,'| style="white-space:nowrap;'..fw..bg..'" |'..result..'\n')
		end
	end
	
	return tt
end

return p