Module:Indexed arguments
Appearance
require('strict')
local p = {}
local TableTools = require('Module:TableTools')
function p.group_indexed_args(args, opts)
local indexed_args = {}
for k, v in pairs(args) do
local n = string.match(k, '%d+$')
if n then
n = tonumber(n)
indexed_args[n] = indexed_args[n] or {}
local newk = string.gsub(k, '%d+$', '')
if newk == '' then
newk = 1
end
indexed_args[n][newk] = indexed_args[n][newk] or v
end
end
indexed_args = TableTools.compressSparseArray(indexed_args)
opts = opts or {}
for i, alias in ipairs(opts.first_index_aliases or {}) do
if args[alias] then
indexed_args[1] = indexed_args[1] or {}
indexed_args[1][alias] = indexed_args[1][alias] or args[alias]
end
end
return indexed_args
end
return p