Module:TableBuilder
--Module appliquant aux fonctions de la librairie Table une inteface fluide.
local meta = {}
meta.insert = function ( t, ... )
table.insert( t, ... ) return t
end
meta.remove = function ( t, ... )
table.remove( t, ... ) return t
end
meta.sort = function ( t, ... )
table.sort( t, ... ) return t
end
meta.maxn = function ( t )
return table.maxn( t )
end
meta.concat = function ( t, ... )
return table.concat( t, ... )
end
meta.__index = function ( t, key )
local metafunc = meta[key] if type( metafunc ) == 'function' then return function ( ... ) return metafunc( t, ... ) end end
end
meta.minsert = function( t, ... )
local sel for i = 1, select( '#', ... ) do sel = select( i, ... ) if sel then table.insert( t, sel ) end end return t
end
meta.tinsert = function( t, tab, first, last )
if type( tab ) == 'table' then for i = ( tonumber( first ) or 1 ), ( tonumber( last ) or #tab ) do table.insert( t, tab[i] ) end end return t
end
local TableBuilder = {
new = function( ... ) local t = { ... } setmetatable( t, meta ) return t end, set = function( t ) if type( t ) == 'table' then setmetatable( t, meta ) end return t end
}
return TableBuilder