词条 | Module:Sandbox/Pray93/Sports results |
释义 | -- Module to build results cross-tables for standings in Sports-- See documentation for details require('Module:No globals') local p = {} -- Main functionfunction 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] ~= 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
-- Create header -- Open table table.insert(t,'{|class="wikitable" style="text-align:center;"\') -- 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','Home \\\\ Away') -- Other columns passed to subfunction t_return = p.header(t_return,Args,p_sub,N_teams,team_list) t = t_return.tab_text
-- 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 team_code_ii
-- Team names table.insert(t,'|- \') -- New row table.insert(t,'! scope="row" style="text-align: right;"| '..team_name..'\') -- Position number
-- Then individual results t = p.row(t,Args,N_teams,team_list,ii,ii_show) end
-- Close table table.insert(t, '|}\')
-- 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 = 'citation needed', args = { reason='No source parameter defined', date=os.date('%B %Y') } }
-- 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 functionsfunction 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_list[ii] short_name = Args['short_'..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_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 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:#BBBBBB;' table.insert(tt,'| style="'..fw..bg..'" | \') 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_list[jj] result = Args['match_'..team_code_ii..'_'..team_code_jj] or table.insert(tt,'| style="white-space:nowrap;'..fw..bg..'" |'..result..'\') end end
return tt end return p |
随便看 |
|
开放百科全书收录14589846条英语、德语、日语等多语种百科知识,基本涵盖了大多数领域的百科知识,是一部内容自由、开放的电子版国际百科全书。