Jump to content

Module:SAFFMatrix

From Wikipedia, the free encyclopedia
local p = {}

-- Color codes
local homeWin = 'background:#c8dafc;'   -- blue
local awayWin = 'background:#f9c8c8;'   -- red
local noGame  = 'background:#e0e0e0;'   -- grey

function p.render(frame)
    local args = frame:getParent().args

    -- Teams (5 teams)
    local teams = {
        "APF", "EAB", "KAC", "NAS", "TRU"
    }

    -- Matches table: key = "HOME|AWAY" → "H 2–0", "A 0–1", "D 1–1"
    local matches = {}
    for k,v in pairs(args) do
        if k:match("vs_") then
            local key = k:gsub("vs_", "")
            matches[key] = v
        end
    end

    -- Start table
    local out = '{| class="wikitable" style="text-align:center"\n'
    out = out .. '! Home team ↓\n! Visitor team →'

    -- Header row
    for _,a in ipairs(teams) do
        out = out .. ' !! ' .. a
    end
    out = out .. '\n'

    -- Rows
    for _,home in ipairs(teams) do
        out = out .. '|-\n! ' .. home .. '\n'
        for _,away in ipairs(teams) do
            if home == away then
                out = out .. '| style="'..noGame..'" | \n'
            else
                local key = home .. '_' .. away
                local res = matches[key]

                if not res or res == "" then
                    out = out .. '| style="'..noGame..'" | \n'
                else
                    local r,t = res:match("(%a)%s(.+)")
                    local style = ""

                    if r == "H" then style = homeWin
                    elseif r == "A" then style = awayWin
                    else style = noGame end

                    out = out .. '| style="'..style..'" | '..t..'\n'
                end
            end
        end
    end

    out = out .. '|}'
    return out
end

return p