Modul:Sports results: Perbedaan antara revisi

Konten dihapus Konten ditambahkan
k ujicoba
Uzume (bicara | kontrib)
strict
 
(6 revisi perantara oleh 3 pengguna tidak ditampilkan)
Baris 2:
-- See documentation for details
 
require('Module:No globalsstrict')
 
local p = {}
Baris 9:
function p.main(frame)
-- Get the args, stripping out blank values
local getArgs = require('ModuleModul:Arguments').getArgs
local Args = getArgs(frame, {parentFirst = true})
 
Baris 26:
local ii, ii_fw, bg_col, team_name, team_code_ii, ii_start, ii_end
-- Optional custom team header
local team_header = Args['team_header'] or 'HomeKandang \\ AwayTandang'
-- Number of legs
local legs = tonumber(Args['legs']) or 1
local multirowlegs = (Args['multirowlegs'] or 'no') ~= 'no'
 
-- Edit links if requested
local baselink = frame:getParent():getTitle()
Baris 36 ⟶ 38:
or ''
local edit_links = template_name == '' and ''
or require('Modul:Navbar')._navbar({
or frame:expandTemplate{ title = 'navbar',
template_name,
args = { mini=1, style='float:right', template_name} }
mini=1,
style='float:right'
})
 
-- Get the custom start point for the table (most will start by default at 1)
local top_pos = tonumber(Args['highest_pos']) or 1
Baris 46 ⟶ 51:
 
-- Load some other modules
local p_sub = require('ModuleModul:Sports table/sub')
 
-- Alternative syntax for team list
if Args['team_order'] and Args['team_order'] ~= '' then
local tlist = mw.text.split(Args['team_order'], '%s*[;,]%s*')
for k, tname in ipairs(tlist) do
if tname ~= '' then
Args['team' .. k] = tname
end
end
end
 
if Args['team_header_note'] then
notes_exist=true
local note_string = frame:expandTemplate{ title = 'efn',
args = { group='lower-alpha', Args['team_header_note']} }
team_header = team_header .. note_string
end
 
-- Read in number of consecutive teams (ignore entries after skipping a spot)
Baris 77 ⟶ 99:
t_return = p_sub.colhead(t_return,'auto', edit_links .. ' ' .. team_header)
-- Other columns passed to subfunction
t_return = p.header(t_return,Args,p_sub,N_teams,team_list,legs,multirowlegs)
t = t_return.tab_text
 
Baris 88 ⟶ 110:
 
-- Now create individual rows
ii_start = tonumber(Args['highest_row']) and (tonumber(Args['highest_row']) > top_pos) and tonumber(Args['highest_row']) or top_pos
for ii=top_pos,N_teams do
ii_end = tonumber(Args['lowest_row']) and (tonumber(Args['lowest_row']) < N_teams) and tonumber(Args['lowest_row']) or N_teams
for ii=ii_start,ii_end do
-- Get team info
team_code_ii = team_list[ii]
team_name = Args['name_'..team_code_ii] or team_code_ii
local ii_style = 'text-align:' .. (Args['team_align'] or 'right') .. ';'
.. (ii and ii == ii_show and 'font-weight:bold;' or '')
.. (Args['team_nowrap'] and 'white-space:nowrap;' or '')
 
local team_note = Args['note_'..team_code_ii]
if team_note then
notes_exist = true
-- Only when it exist
-- First check for existence of reference for note
if not Args['note_'..team_note] then
-- It's the entry
-- Add random end for unique ID if more tables are present on article (which might otherwise share an ID)
note_id = '"table_note_'..team_code_ii..rand_val..'"'
note_id_list[team_code_ii] = note_id
note_string = frame:expandTemplate{ title = 'efn',
args = { group='lower-alpha', name=note_id, team_note} }
else
-- Check for existence elsewhere
local note_local_num = team_list[team_note] or ii_end + 1
if note_id_list[team_note] or ((note_local_num >= ii_start) and (note_local_num <= ii_end)) then
-- It exists
note_id = '"table_note_'..team_note..rand_val..'"' -- Identifier
note_string = frame:extensionTag{ name = 'ref',
args = { group = 'lower-alpha', name = note_id} }
else
-- Now define the identifier for this
-- Add random end for unique ID
note_id = '"table_note_'..team_note..rand_val..'"'
note_id_list[team_note] = note_id
note_string = frame:expandTemplate{ title = 'efn',
args = { group='lower-alpha', name=note_id, Args['note_'..team_note]} }
end
end
-- Now append this to the team_name string
team_name = team_name..note_string
end
-- Team names
table.insert(t,'|- \n') -- New row
table.insert(t,'! scope="row"'.. style(multirowlegs and ' rowspan="' .. legs or '')
.. 'style="'.. ii_style ..'"| '..team_name..'\n') -- Position number
 
-- Now include note to match results if needed
Baris 116 ⟶ 172:
-- It's the entry
-- Add random end for unique ID if more tables are present on article (which might otherwise share an ID)
note_id = '"table_note_'..l.."_"..team_code_ii..'_'..team_code_jj..rand_val..'"'
note_id_list[team_code_ii..'_'..team_code_jj] = note_id
note_string = frame:expandTemplate{ title = 'efn',
args = { group='Table_noteslower-alpha', name=note_id, match_note} }
else
-- Check for existence elsewhere
local 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
-- ItReferencing existsan existing note
note_id = '"table_note_'..note_id_list[match_note..rand_val..'"'] -- IdentifierBorrow the existing identifier
note_string = frame:extensionTag{ name = 'ref',
args = { group = 'lower-alpha', name = note_id} }
elseif (note_local_num >= ii_start) and (note_local_num <= ii_end) then
else
-- Referencing a player note from a match note. In this case, we remove the leg part
-- Now define the identifier for this
-- Add random end for unique ID
note_id = '"table_note_'..match_note..rand_val..'"'
note_string = frame:extensionTag{ name = 'ref',
args = { group = 'lower-alpha', name = note_id} }
else
-- Referencing a different match note before its defined with its content
note_id = '"table_note_'..l.."_"..match_note..rand_val..'"'
note_id_list[match_note] = note_id
-- Call refn template
note_string = frame:expandTemplate{ title = 'efn',
args = { group='Table_noteslower-alpha', name=note_id, Args['note_'..match_note]} }
end
end
Baris 145 ⟶ 204:
end
-- Then individual results
t = p.row(t,Args,N_teams,team_list,ii,ii_show,legs,multirowlegs)
end
 
Baris 157 ⟶ 216:
or 'unknown'
local source = Args['source']
or frame:expandTemplate{ title = 'citationbutuh neededrujukan',
args = { reason='NoTidak sourceada parameter definedsumber yang dimasukkan', date=os.date('%B %Y') } }
 
-- Create footer text
Baris 166 ⟶ 225:
elseif update=='' then
-- Empty parameter
table.insert(t_footer,'UpdatedDiperbarui tohingga match(es)pertandingan playedtanggal onyang unknowntak diketahui. ')
elseif string.lower(update)=='future' then
-- Future start date
table.insert(t_footer,'FirstPertandingan match(es)pertama willakan bedimainkan playedpada ontanggal '..start_date..'. ')
else
table.insert(t_footer,'UpdatedDiperbarui tohingga match(es)pertandingan played ontanggal '..update..'. ')
end
table.insert(t_footer,'SourceSumber: '..source)
if (Args['matches_style'] or '') == 'FBR' then
table.insert(t_footer, Args['team_header']
and '<br />ColoursWarna: BlueBiru = lefttim columndi teamkolom winkiri menang; YellowKuning = drawseri; RedMerah = toptim di rowbaris teamatas winmenang.'
or '<br />ColoursWarna: BlueBiru = hometim teamtuan winrumah menang; YellowKuning = drawseri; RedMerah = awaytim teamtamu winmenang.')
elseif (Args['matches_style'] or '') == 'BSR' then
table.insert(t_footer, Args['team_header']
and '<br />ColoursWarna: BlueBiru = lefttim columndi teamkolom winkiri menang; RedMerah = toptim di rowbaris teamatas winmenang.'
or '<br />ColoursWarna: BlueBiru = hometim teamtuan winrumah menang; RedMerah = awaytim teamtamu winmenang.')
end
if Args['a_note'] then
table.insert(t_footer, '<br />ForUntuk upcomingpertandingan matchesmendatang, anhuruf "a" indicatesmenandakan thereadanya isartikel anmengenai articlepersaingan aboutantara thedua rivalrytim between the two participantspeserta.')
end
if Args['ot_note'] then
table.insert(t_footer, '<br />MatchesPertandingan withdengan backgroundwarna inlatar abelakang lighterlebih colourterang wereartinya decidedditentukan aftermelalui overtimeperpanjangan waktu.')
end
 
local templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = 'Modul:Sports results/styles.css' }
}
 
-- Add notes (if applicable)
if notes_exist then
table.insert(t_footer,'<br>NotesCatatan:')
t_footer = templatestyles .. '<div class="sports-results-notes">'..table.concat(t_footer)..'</div>'
-- As reflist size text
t_footer = t_footer..frame:expandTemplate{ title = 'notelist', args = { group='lower-alpha'} }
t_footer = '<div class="reflist">'..table.concat(t_footer)..'</div>'
t_footer = t_footer..frame:expandTemplate{ title = 'notelist', args = { group='Table_notes'} }
else
t_footer = templatestyles .. '<div class="sports-results-notes">'..table.concat(t_footer)..'</div>'
-- 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)
 
-- Rewrite anchor links
for k=1,#t do
Baris 211 ⟶ 272:
end
 
return table.concat(t)'<div style="overflow:hidden">'
.. '<div class="noresize overflowbugx" style="overflow:auto">\n'
.. table.concat(t) .. '</div></div>'
end
 
Baris 226 ⟶ 289:
elseif ss == 'flag' then
n = mw.ustring.gsub(n, '(<span class="flagicon">%s*%[%[[Ff][Ii][Ll][Ee]:[^%[%]]*link=)[^%|%[%]]*(%]%][^<>]*</span>)%s*%[%[([^%[%]%|]*)%|[^%[%]]*%]%]', '%1%3%2')
n = mw.ustring.gsub(n, '.*(<span class="flagicon">%s*%[%[[Ff][Ii][Ll][Ee]:[^%[%]]*%]%][^<>]*</span>).*', '%1')
n = mw.ustring.gsub(n, '&nbsp;(</span>)', '%1')
end
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')
n = mw.ustring.gsub(n, '(%[%[[^%|%]]*%|)([A-Z][A-Z][A-Z])(%]%])&nbsp;<span[^<>]*>%([A-Z][A-Z][A-Z]%)</span>', '%1%2%3')
return n
end
Baris 252 ⟶ 317:
else
wc, lc, tc = '#BBF3FF', '#FBB', '#FFB' -- blue1, red1, yellow1
end
 
-- check for override
if s:match('^%s*<span%s%s*style%s*=["\'%s]*background[%-colr]*%s*:([^\'";<>]*).-$') then
local c = mw.ustring.gsub(s,'^%s*<span%s%s*style%s*=["\'%s]*background[%-colr]*%s*:([^\'";<>]*).-$', '%1')
return c
end
 
Baris 260 ⟶ 331:
if s:match('^%s*%[[^%[%]%s]*%s([^%[%]]*)%]') then
s = s:match('^%s*%[[^%[%]%s]*%s([^%[%]]*)%]')
end
if s:match('<span[^<>]*>(.-)</span>') then
s = s:match('<span[^<>]*>(.-)</span>')
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
Baris 277 ⟶ 351:
 
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*(%[[^%[%]%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')
s = mw.ustring.gsub(s, '^%s*(%[[^%[%]%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,legs,multirowlegs)
local ii, team_code_ii, short_name
legs = legs or 1
Baris 297 ⟶ 371:
 
for l=1,legs do
if multirowlegs and l > 1 then
break
end
for ii=top_pos,N_teams do
team_code_ii = team_list[ii]
Baris 308 ⟶ 385:
end
 
function p.row(tt,Args,N_teams,team_list,ii,ii_show,legs,multirowlegs)
-- Note ii is the row number being shown
local jj, fw, bg, result, result_extra, team_code_ii, team_code_jj
Baris 321 ⟶ 398:
local top_pos = tonumber(Args['highest_pos']) or 1
for l=1,legs do
if multirowlegs and l > 1 then
table.insert(tt,'|- \n') -- New row
end
for jj=top_pos,N_teams do
team_code_jj = team_list[jj]
Baris 361 ⟶ 441:
if result_extra == 'OT' then
bg = 'background:' .. get_score_background(result,'level3') .. ';'
elseif result_extra == 'OTL' then
bg = 'background:' .. get_score_background('0–1','level3') .. ';'
elseif result_extra == 'OTW' then
bg = 'background:' .. get_score_background('1–0','level3') .. ';'
elseif result_extra == 'L' then
bg = 'background:' .. get_score_background('0–1','') .. ';'
elseif result_extra == 'W' then
bg = 'background:' .. get_score_background('1–0','') .. ';'
else
bg = 'background:' .. get_score_background(result,'') .. ';'