La documentación para este módulo puede ser creada en Módulo:Tablas/doc
local z = {} function z.tostring(tabla, identacion) identacion = identacion or '\n' local resultado = '' if not tabla then return end for k,v in pairs(tabla) do if type(k) == 'string' then k2='"' .. k .. '"' else k2=k end if type(v)=='table' then resultado = resultado .. identacion .. k2 .. ': {' .. z.tostring(v,identacion .. ' ') .. identacion .. '}' elseif type(v)=='string' then resultado = resultado .. identacion .. k2 .. ': "' .. v .. '"' else resultado = resultado .. identacion .. k2 .. ': ' .. tostring(v) end end return resultado end function z.elemento(tabla, indice1, indice2, indice3, indice4, indice5, indice6) local resultado if not tabla or not indice1 then return end resultado = tabla[indice1] if not indice2 or not resultado then return resultado end resultado = resultado[indice2] if not indice3 or not resultado then return resultado end resultado = resultado[indice3] if not indice4 or not resultado then return resultado end resultado = resultado[indice4] if not indice5 or not resultado then return resultado end resultado = resultado[indice5] if not indice6 or not resultado then return resultado end resultado = resultado[indice6] return resultado end function z.en(tabla, elemento) if not elemento then return end for k,v in pairs( tabla ) do if v == elemento then return k end end end function z.copiarElementosConValor(original) local copia= {} for k,v in pairs(original) do if v~='' then copia[k] = original[k] end end return copia end function z.insertar(tabla, elemento) if not z.en(tabla, elemento) then table.insert(tabla, elemento) end end function z.insertarElementosConValor(origen, destino) for k,v in pairs(origen) do if v~='' then table.insert(destino, v) end end return copia end function z.sonIguales(tabla1, tabla2) if not tabla1 or not tabla2 then return false end if tabla1 == tabla2 then return true end for k,v in pairs(tabla1) do if tabla2[k] ~= v then return false end end for k,v in pairs(tabla2) do if not tabla1[k] then return false end end return true end function z.ordenarFuncion(tabla, funcion) local funcionInestable = funcion -- Añadir a la tabla un campo con el orden for i,n in ipairs(tabla) do tabla[i].orden = i end table.sort(tabla, function(a,b) if funcionInestable(a, b) then return true -- a < b elseif funcionInestable(b, a) then return false -- b < a elseif a.orden <= b.orden then return true -- a = b y a aparece antes que b else return false -- a = b y b aparece antes que a end end) end function z.ordenar(tabla, criterio) if type(criterio) == 'table' then z.ordenarFuncion(tabla, function(a,b) for i,campo in ipairs(criterio) do if a[campo] < b[campo] then return true elseif a[campo] > b[campo] then return false end end return false -- Todos los valores son iguales end ) else z.ordenarFuncion(tabla, criterio) end end return z