Module:TableBuilder : Différence entre versions
(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
La documentation pour ce module peut être créée à Module:TableBuilder/doc
--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