« Module:TableBuilder » : différence entre les versions

De Lagny-sur-Marne Wiki
Aller à la navigation Aller à la recherche
0x010D (discussion | contributions)
new : la table est crée avec les éléments transmis à la fonction
0x010D (discussion | contributions)
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