Module:TableBuilder

De Lagny-sur-Marne Wiki
Révision datée du 4 septembre 2013 à 09:20 par Zebulon84 (discussion) (ajout de minsert, tinsert et set)
Aller à : navigation, rechercher

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