Edge Rewrite
// HTMLRewriter · presentation

This page was redesigned at the edge.

Cloudflare fetched the original article and streamed it through HTMLRewriter to apply an entirely new visual system without rebuilding the source page.

Jump to content

Module:Aligned dates list/sandbox

From Wikipedia, the free encyclopedia
local p = {}

function p.main(frame)
    local output = {}
    local monthNames = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}
    local daysInMonth = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}

    local function generateSuffixes()
        local suffixes = {""}
        for char = string.byte("b"), string.byte("z") do
            table.insert(suffixes, string.char(char))
        end
        return suffixes
    end

    local suffixes = generateSuffixes()

    for month = 1, 12 do
        local monthName = monthNames[month]
        local days = daysInMonth[month]

        for day = 1, days do
            for _, suffix in ipairs(suffixes) do
                local key1 = string.format("%02d-%02d%s", month, day, suffix)
                local key2 = string.format("%s %02d%s", string.sub(monthName, 1, 3), day, suffix)
                local key3 = string.format("%s %02d%s", string.lower(string.sub(monthName, 1, 3)), day, suffix)
                local value = frame:getParent().args[key1] or frame:getParent().args[key2] or frame:getParent().args[key3]

                if value then
                    table.insert(output, string.format('<div><div style="width:4em;display:inline-block;">%s %d</div> <div style="display:inline-block;">%s</div></div>', monthName, day, value))
                end
            end
        end
    end

    return table.concat(output)
end

return p