dev
Documentation icon Module documentation
[create]

The documentation for this module is missing. Click here to create it.

local p = {}

function p.dump_args(frame)
    local numbered_arg_keys, named_arg_keys = {}, {}
    for k in pairs(frame.args) do
        local arg_key_type = type(k)
        if arg_key_type == 'number' then
            table.insert(numbered_arg_keys, k)
        elseif arg_key_type == 'string' then
            table.insert(named_arg_keys, k)
        else
            assert(false, 'Unexpected frame arg key of type ' .. arg_key_type)
        end
    end
    table.sort(numbered_arg_keys)
    table.sort(named_arg_keys)

    local message = ''
    for _, k in ipairs(numbered_arg_keys) do
        local v = (k < 100000000000000) and frame.args[k] or ((function()
            -- Access to valid numbered parameters where Lua would represent the key in exponential form doesn't work as expected.
            for k0, v0 in pairs(frame.args) do
                if k0 == k then return v0 end
            end
        end)())
        message = message .. mw.ustring.format('%d => %q\n', k, v)
    end
    for _, k in ipairs(named_arg_keys) do
        message = message .. mw.ustring.format('%q => %q\n', k, frame.args[k])
    end
    return message
end

return p