Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Humanipedia
Search
Search
Appearance
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
Module:CricketLeagueGroupStageSummary
Module
Discussion
English
Read
Edit source
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit source
View history
General
What links here
Related changes
Special pages
Page information
Appearance
move to sidebar
hide
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
local p = {} ---------- Background colours for table cells ---------- local colours = { H = "#CCCCFF", -- Home team wins A = "#FFCCCC", -- Away team wins N = "#FFDEAD", -- Match abandoned D = "#F0E68C", -- Match drawn T = "#DDFFDD" -- Match tied } local noMatchColour = "#C0C0C0" -- No match defined local notPlayedColour = "inherit" -- Not played yet local errorColour = "#FF7777" -- Error function trim(s) if not s then return nil else return (mw.ustring.gsub(s, "^%s*(.-)%s*$", "%1")) end end function getArgs(frame) local parent = frame:getParent(); local args = {} for k,v in pairs(parent.args) do args[k] = trim(v) end for k,v in pairs(frame.args) do args[k] = trim(v) end return args; end -- -- Match class -- local cricmatch = {} cricmatch.__index = function(t, key) local ret = rawget(t, key) if ret then return ret end ret = cricmatch[key] if type(ret) == 'function' then return function(...) return ret(t, ...) end else return ret end end cricmatch.addResultLink = function(m, cell, text) cell:tag('span') :attr('title', string.format('Match %d', m.id)) :wikitext(string.format('[[#match%s|%s]]', m.id, text)) end cricmatch.getMarginResult = function(m, row, matchNo) local team = m.result == 'H' and m.home or m.away local marginText if m.margin == 'F' then marginText = "Forfeited" elseif m.margin == 'SO' then marginText = "Super Over" else local n = tonumber(string.sub(m.margin, 1, -2)) local t = string.upper(string.sub(m.margin, -1, -1)) if t == 'R' then marginText = "%d run" elseif t == 'W' then marginText = "%d wicket" elseif t == 'I' then marginText = "Inns & %d run" end if marginText and n then marginText = string.format(marginText, n) if n > 1 then marginText = marginText .. "s" end else marginText = matchNo end if m.dl then marginText = marginText .. ' <span style="font-size: 85%">(' .. m.dl .. ')</span>' end end local cell = addTableCell(row, colours[m.result]) :tag('span'):wikitext(team.shortName):done() :tag('br'):done() m.addResultLink(cell, marginText) return cell:css('padding', '3px 5px') end cricmatch.getResult = function(m, row) local colour, text local matchNo = string.format('[[#match%s|Match %s]]', m.id, m.id) if m.result == 'D' then -- Drawn match colour = colours.D text = 'Match drawn' elseif m.result == 'N' then -- Abandoned match colour = colours.N text = 'Match<br />abandoned' elseif m.result == 'T' then -- Tied match colour = colours.T text = 'Match tied' elseif m.result == 'H' or m.result == 'A' then return m.getMarginResult(row, matchNo) end local cell if text and colour then cell = addTableCell(row, colour) m.addResultLink(cell, text) else cell = addTableCell(row, notPlayedColour, matchNo) end return cell:css('padding', '3px 5px') end function createMatch(id, home, away, result, margin, dl) if not home or not away then return nil end local match = {} setmetatable(match, cricmatch) match.id = id match.home = home match.away = away match.result = result match.margin = margin match.dl = dl return match end -- -- Html Builder helpers -- function addTableRow(tbl) return tbl:tag('tr') end function addTableCell(row, bg, text) return row:tag('td'):css('background-color', bg):wikitext(text) end function addNoMatch(row) addTableCell(row, noMatchColour) return row end -- -- Helper functions -- function buildLegend(container, types, homeaway) local key = container:tag('table') :addClass('wikitable') :css('float', 'right') :css('text-align', 'center') :css('font-size', '90%') :css('margin', '0 0 0 10px') local keys = { 'H', 'A' } local text = { H = (homeaway and 'Home team won' or 'Horizontal team won'), A = (homeaway and 'Visitor team won' or 'Vertical team won'), D = 'Match drawn', N = 'Match abandoned', T = 'Match tied' } local count = 0 for _, _ in pairs(types) do count = count + 1 end local row = addTableRow(key) for _, k in ipairs(keys) do if types[k] then addTableCell(row, colours[k], text[k]) end end local list = container:tag('ul') :css('font-size', '90%') :tag('li') :wikitext(homeaway and "'''Note''': Results listed are according to the " .. "home (horizontal) and visitor (vertical) teams." or "'''Note''': Results listed are according to the " .. "first encounter (top-right) and second encounter (bottom-left).") :done() :tag('li') :wikitext("'''Note''': Click on a result to see " .. "a summary of the match.") :done() return container end function getMatchData(args, teams) local i, m = 0, 1 local match local matches = {} local dlText = args.dls == 'Y' and 'DLS' or 'D/L' local home, away, result, margin, dl while args[i * 5 + 5] do home = teams[trim(args[i * 5 + 1])] away = teams[args[i * 5 + 2]] result = args[i * 5 + 3] margin = args[i * 5 + 4] dl = args[i * 5 + 5] == "Y" match = createMatch(m, home, away, result, margin, dl and dlText or nil) if match then table.insert(matches, match) m = m + 1 end i = i + 1 end return matches end p.create = function(args, teams, tableStyle) local matches = getMatchData(args, teams) -- organise by team local codes, results, types = {}, {}, {} for i, match in ipairs(matches) do local home = match.home.code local away = match.away.code if not results[home] then table.insert(codes, home) results[home] = {} end if not results[away] then table.insert(codes, away) results[away] = {} end results[home][away] = match types[match.result] = true end local teamsort = function(t1, t2) return teams[t1].fullName < teams[t2].fullName end table.sort(codes, teamsort) local wrapper = mw.html.create('div') -- Construct the header local container = wrapper:tag('div') :css('float', 'left') :css('max-width', '100%') local tbl = container:tag('table') :attr('class', 'wikitable module-CricketLeagueGroupStageSummary') :css('width', '100%') :css('display', 'block') :css('overflow', 'auto') :css('border', 'none') if tableStyle then tbl:cssText(tableStyle) else tbl:css('text-align', 'center') :css('white-space', 'nowrap') :css('width', '100%') if #codes > 8 then tbl:css('font-size', (100 - (#codes - 8) * 10) .. '%') end end local homeaway = not (args['homeaway'] and (args['homeaway'] == 'no' or args['homeaway'] == 'n')) local header = addTableRow(tbl) :tag('th') :attr('scope', 'row') :wikitext(homeaway and 'Visitor team β' or 'Vertical team β') :done() for i, code in ipairs(codes) do local team = teams[code] header:tag('th') :attr('rowspan', homeaway and '2' or '2') :attr('scope', 'col') :css('padding', 'inherit 10px') :wikitext(string.format('[[%s|%s]]', team.pageName, team.abbr or team.code)) :newline() end if homeaway then tbl:tag('tr'):tag('th'):attr('scope', 'col'):wikitext('Home team β') else tbl:tag('tr'):tag('th'):attr('scope', 'col'):wikitext('Horizontal team β') end -- Output the main body of the table for i, homecode in ipairs(codes) do local home = teams[homecode] local row = addTableRow(tbl) local teamcell = row:tag('th') :attr('scope', 'row') :css('text-align', 'left') :css('padding', '3px 5px') :css('white-space', 'normal') :wikitext(string.format('[[%s|%s]]', home.pageName, home.fullName)) for j, awaycode in ipairs(codes) do local match = results[homecode][awaycode] if match then match.getResult(row) else addNoMatch(row) end end end -- Legend and notes buildLegend(container, types, homeaway) wrapper:tag('div'):css('clear', 'both') return tostring(wrapper) end p.ICC= function(frame) local args = getArgs(frame) local teams = mw.loadData("Module:ICC teams") local teamsAssoc = {} local i = 1 while teams[i] do teamsAssoc[teams[i].code] = teams[i] i = i + 1 end return p.create(args, teamsAssoc) end p.IPL = function(frame) local args = getArgs(frame) local teams = mw.loadData("Module:Indian Premier League teams") local teamsAssoc = {} local i = 1 while teams[i] do teamsAssoc[teams[i].code] = teams[i] i = i + 1 end return p.create(args, teamsAssoc) end p.WPL = function(frame) local args = getArgs(frame) local teams = mw.loadData("Module:Women's Premier League teams") local teamsAssoc = {} local i = 1 while teams[i] do teamsAssoc[teams[i].code] = teams[i] i = i + 1 end return p.create(args, teamsAssoc) end p.ILT20 = function(frame) local args = getArgs(frame) local teams = mw.loadData("Module:International League T20 teams") local teamsAssoc = {} local i = 1 while teams[i] do teamsAssoc[teams[i].code] = teams[i] i = i + 1 end return p.create(args, teamsAssoc) end p.BBL = function(frame) local args = getArgs(frame) local teams = mw.loadData("Module:Big Bash League teams") local teamsAssoc = {} local i = 1 while teams[i] do teamsAssoc[teams[i].code] = teams[i] i = i + 1 end return p.create(args, teamsAssoc) end p.CPL = function(frame) local args = getArgs(frame) local teams = mw.loadData("Module:Caribbean Premier League teams") local teamsAssoc = {} local i = 1 while teams[i] do teamsAssoc[teams[i].code] = teams[i] i = i + 1 end return p.create(args, teamsAssoc) end p.WBBL = function(frame) local args = getArgs(frame) local teams = { ADS = { code = "ADS", fullName = "Adelaide Strikers", shortName = "Strikers", pageName = "Adelaide Strikers (WBBL)" }, BRH = { code = "BRH", fullName = "Brisbane Heat", shortName = "Heat", pageName = "Brisbane Heat (WBBL)" }, HBH = { code = "HBH", fullName = "Hobart Hurricanes", shortName = "Hurricanes", pageName = "Hobart Hurricanes (WBBL)" }, MLR = { code = "MLR", fullName = "Melbourne Renegades", shortName = "Renegades", pageName = "Melbourne Renegades (WBBL)" }, MLS = { code = "MLS", fullName = "Melbourne Stars", shortName = "Stars", pageName = "Melbourne Stars (WBBL)" }, PRS = { code = "PRS", fullName = "Perth Scorchers", shortName = "Scorchers", pageName = "Perth Scorchers (WBBL)" }, SYS = { code = "SYS", fullName = "Sydney Sixers", shortName = "Sixers", pageName = "Sydney Sixers (WBBL)" }, SYT = { code = "SYT", fullName = "Sydney Thunder", shortName = "Thunder", pageName = "Sydney Thunder (WBBL)" } } return p.create(args, teams) end p.SA20 = function(frame) local args = getArgs(frame) local teams = { MICT = { code = "MICT", fullName = "MI Cape Town", shortName = "Cape Town", pageName = "MI Cape Town", startYear = 2023 }, DSG = { code = "DSG", fullName = "Durban's Super Giants", shortName = "Durban", pageName = "Durban's Super Giants", startYear = 2023 }, JSK = { code = "JSK", fullName = "Joburg Super Kings", shortName = "Johannesburg", pageName = "Joburg Super Kings", startYear = 2023 }, PR = { code = "PR", fullName = "Paarl Royals", shortName = "Paarl", pageName = "Paarl Royals", startYear = 2023 }, PC = { code = "PC", fullName = "Pretoria Capitals", shortName = "Pretoria", pageName = "Pretoria Capitals", startYear = 2023 }, SEC = { code = "SEC", fullName = "Sunrisers Eastern Cape", shortName = "Eastern Cape", pageName = "Sunrisers Eastern Cape", startYear = 2023 } } return p.create(args, teams) end p.PSL = function(frame) local args = getArgs(frame) local teams = mw.loadData("Module:PakistanSuperLeagueTeams") local teamsAssoc = {} local i = 1 while teams[i] do teamsAssoc[teams[i].code] = teams[i] i = i + 1 end return p.create(args, teamsAssoc) end p.BPL = function(frame) local args = getArgs(frame) local teams = mw.loadData("Module:Bangladesh Premier League teams") local teamsAssoc = {} local i = 1 while teams[i] do teamsAssoc[teams[i].code] = teams[i] i = i + 1 end return p.create(args, teamsAssoc) end p.NPL = function(frame) local args = getArgs(frame) local teams = { BK = { code = "BK", fullName = "Biratnagar Kings", shortName = "Biratnagar", pageName = "Biratnagar Kings", startYear = 2024 }, CR = { code = "CR", fullName = "Chitwan Rhinos", shortName = "Chitwan", pageName = "Chitwan Rhinos", startYear = 2024 }, JB = { code = "JB", fullName = "Janakpur Bolts", shortName = "Janakpur", pageName = "Janakpur Bolts", startYear = 2024 }, KY = { code = "KY", fullName = "Karnali Yaks", shortName = "Karnali", pageName = "Karnali Yaks", startYear = 2024 }, KG = { code = "KG", fullName = "Kathmandu Gurkhas", shortName = "Kathmandu", pageName = "Kathmandu Gurkhas", startYear = 2024 }, LL = { code = "LL", fullName = "Lumbini Lions", shortName = "Lumbini", pageName = "Lumbini Lions", startYear = 2024 }, PA = { code = "PA", fullName = "Pokhara Avengers", shortName = "Pokhara", pageName = "Pokhara Avengers", startYear = 2024 }, SR = { code = "SR", fullName = "Sudurpaschim Royals", shortName = "Sudurpaschim", pageName = "Sudurpaschim Royals", startYear = 2024 } } return p.create(args, teams) end p.Aus = function(frame) local args = getArgs(frame) local teams = { NSW = { code = "NSW", fullName = "New South Wales", shortName = "NSW", pageName = "New South Wales cricket team" }, QLD = { code = "QLD", fullName = "Queensland", shortName = "Queensland", pageName = "Queensland cricket team" }, SA = { code = "SA", fullName = "South Australia", shortName = "SA", pageName = "South Australia cricket team" }, TAS = { code = "TAS", fullName = "Tasmania", shortName = "Tasmania", pageName = "Tasmania cricket team" }, VIC = { code = "VIC", fullName = "Victoria", shortName = "Victoria", pageName = "Victoria cricket team" }, WA = { code = "WA", fullName = "Western Australia", shortName = "WA", pageName = "Western Australia cricket team" } } return p.create(args, teams) end p.MLC = function(frame) local args = getArgs(frame) local teams = { LAKR = { code = "LAKR", fullName = "Los Angeles Knight Riders", shortName = "Los Angeles", pageName = "Los Angeles Knight Riders", startYear = 2023 }, MINY = { code = "MINY", fullName = "MI New York", shortName = "New York", pageName = "MI New York", startYear = 2023 }, SFU = { code = "SFU", fullName = "San Francisco Unicorns", shortName = "San Francisco", pageName = "San Francisco Unicorns", startYear = 2023 }, SO = { code = "SO", fullName = "Seattle Orcas", shortName = "Seattle", pageName = "Seattle Orcas", startYear = 2023 }, TSK = { code = "TSK", fullName = "Texas Super Kings", shortName = "Texas", pageName = "Texas Super Kings", startYear = 2023 }, WF = { code = "WF", fullName = "Washington Freedom", shortName = "Washington", pageName = "Washington Freedom (cricket)", startYear = 2023 } } return p.create(args, teams) end p.M100 = function(frame) local args = getArgs(frame) local teams = { BIR = { code = "BIR", fullName = "Birmingham Phoenix", shortName = "Phoenix", pageName = "Birmingham Phoenix" }, LON = { code = "LON", fullName = "London Spirit", shortName = "Spirit", pageName = "London Spirit" }, MAN = { code = "MAN", fullName = "Manchester Originals", shortName = "Originals", pageName = "Manchester Originals" }, NOR = { code = "NOR", fullName = "Northern Superchargers", shortName = "Superchargers", pageName = "Northern Superchargers" }, OVA = { code = "OVA", fullName = "Oval Invincibles", shortName = "Invincibles", pageName = "Oval Invincibles" }, SOU = { code = "SOU", fullName = "Southern Brave", shortName = "Brave", pageName = "Southern Brave" }, TRE = { code = "TRE", fullName = "Trent Rockets", shortName = "Rockets", pageName = "Trent Rockets" }, WEL = { code = "WEL", fullName = "Welsh Fire", shortName = "Fire", pageName = "Welsh Fire" } } return p.create(args, teams) end p.W100 = function(frame) local args = getArgs(frame) local teams = { BIRw = { code = "BIRw", fullName = "Birmingham Phoenix women", shortName = "Phoenix", pageName = "Birmingham Phoenix" }, LONw = { code = "LONw", fullName = "London Spirit women", shortName = "Spirit", pageName = "London Spirit" }, MANw = { code = "MANw", fullName = "Manchester Originals women", shortName = "Originals", pageName = "Manchester Originals" }, NORw = { code = "NORw", fullName = "Northern Superchargers women", shortName = "Superchargers", pageName = "Northern Superchargers" }, OVAw = { code = "OVAw", fullName = "Oval Invincibles women", shortName = "Invincibles", pageName = "Oval Invincibles" }, SOUw = { code = "SOUw", fullName = "Southern Brave women", shortName = "Brave", pageName = "Southern Brave" }, TREw = { code = "TREw", fullName = "Trent Rockets women", shortName = "Rockets", pageName = "Trent Rockets" }, WELw = { code = "WELw", fullName = "Welsh Fire women", shortName = "Fire", pageName = "Welsh Fire" } } return p.create(args, teams) end p.Eng = function(frame) local args = getArgs(frame) local teams = { DER = { code = "DER", fullName = "Derbyshire", shortName = "Derbyshire", pageName = "Derbyshire County Cricket Club" }, DUR = { code = "DUR", fullName = "Durham", shortName = "Durham", pageName = "Durham County Cricket Club" }, ESS = { code = "ESS", fullName = "Essex", shortName = "Essex", pageName = "Essex County Cricket Club" }, GLA = { code = "GLA", fullName = "Glamorgan", shortName = "Glamorgan", pageName = "Glamorgan County Cricket Club" }, GLO = { code = "GLO", fullName = "Gloucestershire", shortName = "Gloucestershire", pageName = "Gloucestershire County Cricket Club" }, HAM = { code = "HAM", fullName = "Hampshire", shortName = "Hampshire", pageName = "Hampshire County Cricket Club" }, KEN = { code = "KEN", fullName = "Kent", shortName = "Kent", pageName = "Kent County Cricket Club" }, LAN = { code = "LAN", fullName = "Lancashire", shortName = "Lancashire", pageName = "Lancashire County Cricket Club" }, LEI = { code = "LEI", fullName = "Leicestershire", shortName = "Leicestershire", pageName = "Leicestershire County Cricket Club" }, MID = { code = "MID", fullName = "Middlesex", shortName = "Middlesex", pageName = "Middlesex County Cricket Club" }, NOR = { code = "NOR", fullName = "Northamptonshire", shortName = "Northamptonshire", pageName = "Northamptonshire County Cricket Club" }, NOT = { code = "NOT", fullName = "Nottinghamshire", shortName = "Nottinghamshire", pageName = "Nottinghamshire County Cricket Club" }, SOM = { code = "SOM", fullName = "Somerset", shortName = "Somerset", pageName = "Somerset County Cricket Club" }, SUR = { code = "SUR", fullName = "Surrey", shortName = "Surrey", pageName = "Surrey County Cricket Club" }, SUS = { code = "SUS", fullName = "Sussex", shortName = "Sussex", pageName = "Sussex County Cricket Club" }, WAR = { code = "WAR", fullName = "Warwickshire", shortName = "Warwickshire", pageName = "Warwickshire County Cricket Club" }, WOR = { code = "WOR", fullName = "Worcestershire", shortName = "Worcestershire", pageName = "Worcestershire County Cricket Club" }, YOR = { code = "YOR", fullName = "Yorkshire", shortName = "Yorkshire", pageName = "Yorkshire County Cricket Club" } } return p.create(args, teams) end p.LPL = function(frame) local args = getArgs(frame) local teams = { CS = { code = "CS", fullName = "Colombo Strikers", shortName = "Colombo", pageName = "Colombo Strikers" }, DS = { code = "DS", fullName = "Dambulla Sixers", shortName = "Dambulla", pageName = "Dambulla Sixers" }, GM = { code = "GM", fullName = "Galle Marvels", shortName = "Galle", pageName = "Galle Marvels" }, JK = { code = "JK", fullName = "Jaffna Kings", shortName = "Jaffna", pageName = "Jaffna Kings" }, KF = { code = "KF", fullName = "Kandy Falcons", shortName = "Kandy", pageName = "Kandy Falcons" } } return p.create(args, teams) end return p
Summary:
Please note that all contributions to Humanipedia may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Humanipedia:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Templates used on this page:
Module:CricketLeagueGroupStageSummary
(
edit
)
Module:CricketLeagueGroupStageSummary/doc
(
edit
)
Module:Indian Premier League teams
(
edit
)