Moduulin Fr:TableBuilder käyttöohje
Tämä sivu on kopio. Tätä ohjetta muokataan muokkaamalla suomenkielisessä Wikipediassa olevaa alkuperäistä versiota jonka muutokset kopioituvat automaattisesti tälle sivulle. Tämä moduuli on osa ranskankielisestä Wikipediasta kopioitua Wikidata ja Interface Wikidata -moduulikokonaisuutta (ks. ohjeet ja esimerkit). Listauksen kaikista tähän liittyvistä moduuleista löydät Ranskankielisen Wikipedian Wikidata-moduulit -sivulta.
|
--Module appliquant aux fonctions de la librairie Table une inteface fluide.
local meta = {
insert = function ( t, ... )
table.insert( t, ... )
return t
end,
remove = function ( t, ... )
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 )
end
end
return t
end,
}
meta.__index = function ( t, key )
local metafunc = meta
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 ~= nil then
return tableRefs
end
local retVal = { }
tableRefs = setmetatable( retVal, meta )
for key, elt in pairs( val ) do
retVal = recursiveClone( elt )
end
return retVal
else
return val
end
end
return recursiveClone( t )
end,
}
return TableBuilder