모듈:Sports results

-- Module to build results cross-tables for standings in Sports
-- See documentation for details

require('strict')
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 ii, ii_fw, bg_col, team_name, team_code_ii
	
	-- Load some other modules
	local p_sub = require('Module:Sports table/sub')
	
	-- Read in number of consecutive teams (ignore entries after skipping a spot)
	while Args'team'..N_teams+1 or Args'팀'..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_listN_teams = Args'team'..N_teams or Args'팀'..N_team-- i^th entry is team X
		team_listArgs'team'..N_teams or Args'팀'..N_teams+1 = N_teams -- team X entry is position i
	end
	
	-- Get team to show
	local ii_show = team_listArgs'showteam' or Args'팀강조' -- nil if non-existant
	
	-- Create header
	-- Open table
	table.insert(t,'\n')
	
	-- Get info for footer
	local update = Args'update'			or 'unknown'
	local start_date = Args'start_date' 	or 'unknown'
	local source = Args'source'			or frame:expandTemplate{ title = '출처', args = { '날짜' = os.date('%Y-%m-%d') } }
	
	-- Create footer text
	-- Date updating
	if string.lower(update)=='complete' then
		-- Do nothing
	elseif update== then
		-- Empty parameter
		table.insert(t_footer,'Updated to match(es) played on unknown. ')
	elseif string.lower(update)=='future' then
		-- Future start date
		table.insert(t_footer,'First match(es) will be played on '..start_date..'. ')
	else
		table.insert(t_footer,'Updated to match(es) played on '..update..'. ')
	end
	table.insert(t_footer,'Source: '..source)
	-- As reflist size text
	t_footer = ..table.concat(t_footer)..
	-- Add footer to main text table
	table.insert(t,t_footer)
	
	return table.concat(t)
end
-- Other functions
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 '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_listii
		short_name = Args'short_'..team_code_ii or Args'단축_'..team_code_ii or Args'축약_'..team_code_ii 	or 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, team_code_ii, team_code_jj
	local cell_bold = false
	
	team_code_ii = team_listii
	
	-- 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
		if ii == jj 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:transparent;'
			table.insert(tt,'| style="'..fw..bg..'" | —\n')
		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:transparent;'
			
			-- Now for the actual result
			team_code_jj = team_listjj
			result = Args'match_'..team_code_ii..'_'..team_code_jj or Args'경기_'..team_code_ii..'_'..team_code_jj  or 
			table.insert(tt,'| style="white-space:nowrap;'..fw..bg..'" |'..result..'\n')
		end
	end
	
	return tt
end
return p