« Module:TableBuilder » : différence entre les versions
Aller à la navigation
Aller à la recherche
new : la table est crée avec les éléments transmis à la fonction |
ajout de minsert, tinsert et set |
||
| Ligne 33 : | Ligne 33 : | ||
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 ) | |||
for i = ( first or 1 ), ( last or #tab ) do | |||
table.insert( t, tab[i] ) | |||
end | |||
return t | |||
end | |||
local TableBuilder = { | local TableBuilder = { | ||
new = function( ... ) | new = function( ... ) | ||
local t = { ... } | local t = { ... } | ||
setmetatable( t, meta ) | |||
return t | |||
end, | |||
set = function( t ) | |||
setmetatable( t, meta ) | setmetatable( t, meta ) | ||
return t | return t | ||
Version du 4 septembre 2013 à 09:20
--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 )
for i = ( first or 1 ), ( last or #tab ) do
table.insert( t, tab[i] )
end
return t
end
local TableBuilder = {
new = function( ... )
local t = { ... }
setmetatable( t, meta )
return t
end,
set = function( t )
setmetatable( t, meta )
return t
end
}
return TableBuilder