Module:SAFF Club Championship progression
(Redirected from Module:SAFFClubChampionshipProgression)
-- Module:SAFF Club Championship progression
local p = {}
local function trim(s) if not s then return "" end return mw.ustring.gsub(s,"^%s*(.-)%s*$","%1") end
local function getArgs(frame)
local parent=frame:getParent()
local args={}
for k,v in pairs(parent.args) do args[k]=v end
for k,v in pairs(frame.args) do args[k]=v end
return args
end
local function renderPlayoffs(args,stageDefs)
local html=mw.html.create()
local tbl=html:tag("table"):addClass("wikitable"):css("text-align","center")
local head=tbl:tag("tr")
head:tag("th"):wikitext("Team")
for _,s in ipairs(stageDefs) do head:tag("th"):wikitext(s.name) end
local teamCodes={}
local seen={}
for _,s in ipairs(stageDefs) do
for _,m in ipairs(s.matches) do
local w=args[m.winner] and trim(args[m.winner]) or nil
local l=args[m.loser] and trim(args[m.loser]) or nil
if w and not seen[w] then table.insert(teamCodes,w); seen[w]=true end
if l and not seen[l] then table.insert(teamCodes,l); seen[l]=true end
end
end
table.sort(teamCodes)
for _,team in ipairs(teamCodes) do
local row=tbl:tag("tr")
row:tag("th"):wikitext(team)
for _,s in ipairs(stageDefs) do
local cell=row:tag("td")
local status=""
for _,m in ipairs(s.matches) do
local w=args[m.winner] and trim(args[m.winner]) or nil
local l=args[m.loser] and trim(args[m.loser]) or nil
if w==team then status="W"; break
elseif l==team then status="L"; break
end
end
if status=="W" then cell:css("background-color","#c9f7c9"):wikitext("W")
elseif status=="L" then cell:css("background-color","#f7c9c9"):wikitext("L")
else cell:css("background-color","#EEEEEE"):wikitext(" ") end
end
end
return tostring(html)
end
local playoffs_standard={
{ name="Semi-final 1", matches={{winner="SF1W", loser="SF1L"}} },
{ name="Semi-final 2", matches={{winner="SF2W", loser="SF2L"}} },
{ name="Final", matches={{winner="FW", loser="FL"}} }
}
function p.SAFF(frame)
local args=getArgs(frame)
return renderPlayoffs(args,playoffs_standard)
end
function p.SAFF_SF(frame)
local args=getArgs(frame)
return renderPlayoffs(args,playoffs_standard)
end
return p