« Module:TableBuilder » et « Modèle:Article principal » : différence entre les pages

(Différence entre les pages)
Aller à la navigation Aller à la recherche
m
1 version
imported>T12
m (1 version)
 
imported>T12
m (1 version)
 
Ligne 1 : Ligne 1 :
--Module appliquant aux fonctions de la librairie Table une inteface fluide.
<includeonly><div class="bandeau-section bandeau-niveau-detail general">{{#if:{{{contenu|}}}<!--
 
-->|{{{contenu}}}<!--
local meta = {
-->|{{#if:{{{1|}}}<!--
 
  -->|{{#if:{{{amorce|}}}<!--
    insert = function ( t, ... )
      -->|{{{amorce}}}<!--
        table.insert( t, ... )
      -->|{{#if:{{{2|}}}|Articles principaux|Article principal}}<!--
        return t
     -->}} : {{MultiParamètres-Lien|{{{1|}}}|{{{2|}}}|{{{3|}}}|{{{4|}}}|{{{5|}}}|{{{6|}}}|{{{7|}}}|{{{8|}}}|{{{9|}}}|{{{10|}}}}}.<!--
    end,
  -->|<!--PAS DE PARAMETRE 1:-->Article principal : [[{{PAGENAME}}]]<!--
   
  -->}}<!--
    remove = function ( t, ... )
-->}}</div></includeonly><noinclude>{{Documentation}}</noinclude>
        table.remove( t, ... )
        return t
    end,
   
    sort = function ( t, ... )
        table.sort( t, ... )
        return t
    end,
   
    maxn = function ( t )
        return table.maxn( t )
    end,
   
    concat = function ( t, ... )
        return table.concat( t, ... )
    end,
   
    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,
   
    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,
}  
 
meta.__index = function ( t, key )
    local metafunc = meta[key]
    if type( metafunc ) == 'function' then
        return function ( ... ) return metafunc( t, ... ) end
     end
end
       
-- fin des fonctions de la meta-table
 
 
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,
 
    clone = function ( t )
        local tableRefs = { }
        local function recursiveClone( val )
            if type( val ) == 'table' then
                -- Encode circular references correctly
                if tableRefs[val] ~= nil then
                    return tableRefs[val]
                end
   
                local retVal = { }
                tableRefs[val] = setmetatable( retVal, meta )
   
                for key, elt in pairs( val ) do
                    retVal[key] = recursiveClone( elt )
                end
                return retVal
            else
                return val
            end
        end
        return recursiveClone( t )
    end,
}
 
return TableBuilder
Utilisateur anonyme

Menu de navigation