Module:Table
Jump to navigation
Jump to search
Documentation for this module may be created at Module:Table/doc
local p = {}
function p.contains( t, e, c )
if c then
for _, v in pairs( t ) do
if v[c] == e[c] then
return true
end
end
else
for _, v in pairs( t ) do
if v == e then
return true
end
end
end
return false
end
-- Do string.gsub to all values in a table
function p.gsub( t, pattern, repl )
local result = {}
for k, v in pairs( t ) do
if type( v ) == 'string' then
result[k] = string.gsub( v, pattern, repl )
else
result[k] = v
end
end
return result
end
-- Do string.gsub to all indexes in a table
function p.igsub( t, pattern, repl )
local result = {}
for k, v in pairs( t ) do
result[string.gsub( k, pattern, repl )] = v
end
return result
end
function p.key( t, e )
for k, v in pairs( t ) do
if v == e then
return k
end
end
return 0
end
function p.map( t, f )
local result = {}
for k, v in pairs( t ) do
result[k] = f( v )
end
return result
end
function p.merge( ... )
local result = {}
for _, table in ipairs( arg ) do
for k, v in pairs( table ) do
result[k] = v
end
end
return result
end
function p.trim( t, toRemove, keepEmptyParams )
local result = {}
for k, v in pairs( t ) do
if type( v ) == 'string' then
result[k] = mw.text.trim( v ) ~= '' and ( toRemove and mw.text.trim( v, toRemove ) or mw.text.trim( v ) ) or keepEmptyParams and ''
else
result[k] = v
end
end
return result
end
function p.unique( t, c )
local result = {}
for _, v in ipairs( t ) do
if not p.contains( result, v, c ) then
result[#result + 1] = v
end
end
return result
end
return p