Jump to content

Module:Sandbox/Nux

From Wikipedia, the free encyclopedia

local p = {}

function p.parseEnumParams(frame)
    local args = frame:getParent().args
    local result = {}
    
    local i = 1
    while args["label" .. i] and args["value" .. i] and args["color" .. i] do
        table.insert(result, {
            label = mw.ustring.gsub(args["label" .. i] or "", "vv", "$v"),
            value = tonumber(args["value" .. i]) or 0,
            color = args["color" .. i] or ""
        })
        i = i + 1
    end
    
    local jsonString = p.tableToNiceJson(result)
    return '<pre>' .. jsonString .. '</pre>'
end

-- table/array to line-by-line JSON
function p.tableToNiceJson(tbl)
    local jsonString = "[\n"
    for i, entry in ipairs(tbl) do
        jsonString = jsonString .. mw.text.jsonEncode(entry) .. ",\n"
    end
    jsonString = jsonString .. "]"
    
    mw.log("JSON Lines Output:\n" .. jsonString)
    return jsonString
end

-- Debug/test function
function p.test_tableToNiceJson()
    local testTable = {
        { label = "ciastka: $v", value = 2, color = "goldenrod" },
        { label = "słodycze: $v", value = 4, color = "darkred" },
        { label = "napoje: $v", value = 1, color = "lightblue" },
    }
    --mw.log("Test Table Input:", mw.text.jsonEncode(testTable, mw.text.JSON_PRETTY))
    mw.logObject(testTable)
    return p.tableToNiceJson(testTable)
end

return p