The above documentation is transcluded from Module:Table/doc. (edit | history)
local p = {}
function p.getParametersCount( f )
local args = p.trimAll( p.getArgs( f ) )
local parametersCount = 0
if args.numerical then
local i = 1
while args[i] ~= nil do
parametersCount = parametersCount + 1
end
else
for i, j in pairs( args ) do
parametersCount = parametersCount + 1
end
end
return parametersCount
end
function p.search( f )
local args = p.trimAll( p.getArgs( f ) )
if args.index then
for i, j in pairs( args ) do
if args.object == j then
return i
end
end
else
local k = 1
repeat
if args.object == args[k] then
return k
end
k = k + 1
until not args[k]
end
return nil
end
-- Get parameters of the template and the article from the frame (usually f)
function p.getArgs( f )
local args = {}
if f.args then
-- Add template parameters
for i, j in pairs( f.args ) do
args[i] = j
end
-- Add transclusion parameters (parent), overwrite template parameters
for k, l in pairs( f:getParent().args ) do
args[k] = l
end
else
args = f
end
return args
end
-- Do mw.text.trim to all values in a table
function p.trimAll( f, toRemove, keepEmptyParams )
local g = {}
for index, object in pairs( f ) do
if type( object ) == 'string' then
-- Trim
if object ~= nil and mw.text.trim( object ) ~= '' then
if toRemove then
g[index] = mw.text.trim( object, toRemove )
else
g[index] = mw.text.trim( object )
end
end
-- Remove empty values ?
if mw.text.trim( object ) == '' and not keepEmptyParams then
g[index] = nil
end
else
-- Do nothing if the content is not a string
g[index] = object
end
end
return g
end
return p