Esta librería expande enormemente las capacidades de las tablas estándar de LUA. No solo ofrece herramientas para manipular y consultar tablas, sino que también incluye funciones avanzadas para procesar datos, generar secuencias y realizar operaciones complejas que son fundamentales para la creación de efectos dinámicos.
table.view( Table, Name, indent )Descripción: Muestra el contenido completo de una tabla en un formato de texto legible. Invaluable para depurar.
Argumentos:
Table (table): La tabla a visualizar.Name (string, opcional): Nombre para la tabla en la salida de texto.table.inside( Table, e, str1, str2 )Descripción: Comprueba si un elemento, tipo de elemento ("number", "string") o patrón de texto existe dentro de una tabla. Devuelve true o false.
Argumentos:
Table (table): La tabla donde se buscará.e (cualquier tipo): El elemento a buscar.table.index( Table, e, str1, str2 )Descripción: Devuelve el índice (la posición) del primer elemento que coincida con la búsqueda.
Argumentos:
Table (table): La tabla donde se buscará.e (cualquier tipo): El elemento cuyo índice se quiere encontrar.table.compare( Table1, Table2 )Descripción: Compara dos tablas de forma profunda para ver si son idénticas en contenido y estructura.
Argumentos:
Table1 (table), Table2 (table): Las dos tablas a comparar.table.type( Table )Descripción: Analiza el contenido de una tabla y determina un "tipo" general para sus elementos, como "number", "string", "shape", "color", etc.
Argumentos:
Table (table): La tabla a analizar.table.count( Table, e )Descripción: Cuenta cuántas veces aparece un elemento, tipo de elemento o patrón dentro de una tabla.
Argumentos:
Table (table): La tabla donde contar.e (cualquier tipo): El elemento, tipo o patrón a contar.Ejemplo de Uso: local cantidad_numeros = table.count({1, "a", 2}, "number") // Devuelve 2
table.pos( Table, e )Descripción: Devuelve una tabla con todos los índices en los que se encuentra un elemento, tipo o patrón.
Argumentos:
Table (table): La tabla donde buscar.e (cualquier tipo): El elemento, tipo o patrón a localizar.Ejemplo de Uso: local posiciones = table.pos({"a", "b", "a"}, "a") // Devuelve {1, 3}
table.duplicate( Table )Descripción: Crea una copia exacta y profunda de una tabla. Crucial para modificar una tabla sin alterar la original.
Argumentos:
Table (table): La tabla a duplicar.table.disorder( Table )Descripción: Desordena aleatoriamente los elementos de una tabla.
Argumentos:
Table (table | number): La tabla a desordenar. Si es un número, crea una tabla del 1 a ese número y la desordena.table.retire( Table, ... )Descripción: Elimina elementos de una tabla por su índice o por un rango de índices.
Argumentos:
... (number | table): Índices individuales (2, 4) o un rango ({{2, 5}}).table.delete( Table, ... )Descripción: Elimina elementos de una tabla por su valor, tipo o patrón.
Argumentos:
... (cualquier tipo): Valores a eliminar ("rojo"), tipos ("number"), etc.table.reverse( Table )table.cyclic( Table ){a, b, c, d} se convierte en {a, b, c, d, c, b}.table.inserttable( Table1, Table2, Index )Descripción: Inserta todos los elementos de Table2 dentro de Table1 en una posición específica.
Argumentos:
Index (number, opcional): Posición de inserción. Por defecto, al final.table.gsub( Table, Capture, Replace )Descripción: Aplica string.gsub a todos los elementos de tipo string dentro de una tabla.
Argumentos:
Table (table): La tabla a modificar.Capture (string): El patrón a buscar.Replace (string): El texto de reemplazo.table.unique( Table )Descripción: Elimina los elementos duplicados de una tabla, dejando solo una aparición de cada uno.
Ejemplo de Uso: table.unique({1, 2, 2, 3}) // Devuelve {1, 2, 3}
table.ipairs( Table )Descripción: Convierte una tabla con claves no numéricas (asociativa) en una tabla indexada (un array), descartando las claves.
Ejemplo de Uso: table.ipairs({a="rojo", b="verde"}) // Devuelve {"rojo", "verde"}
table.inpack( Table, Group )Descripción: Agrupa los elementos de una tabla en sub-tablas de un tamaño determinado.
Argumentos:
Group (number): El número de elementos que tendrá cada sub-tabla.Ejemplo de Uso: table.inpack({1,2,3,4,5,6}, 2) // Devuelve {{1,2}, {3,4}, {5,6}}
table.filter( Table, Filter )Descripción: Filtra una tabla, devolviendo solo los elementos que cumplen una condición definida por una función de filtro. Es la contraparte de table.match, pero en lugar de buscar un valor, evalúa una condición lógica.
Argumentos:
Table (table): La tabla cuyos elementos se van a filtrar.Filter (function): Una función que recibe dos argumentos, k (la clave o índice) y v (el valor del elemento). La función debe devolver true para los elementos que se desean conservar en la nueva tabla.Ejemplo de Uso:
-- Define un filtro que solo acepta números impares.
local filtro_impares = function(k, v)
if v % 2 == 1 then
return true
end
return false
end
-- Aplica el filtro a una tabla.
local mi_tabla = {1, 2, 3, 4, 5, 6}
local tabla_filtrada = table.filter(mi_tabla, filtro_impares) -- Devuelve {1, 3, 5}
table.concat1 a table.concat4, table.twintable.combine( Table, n )Descripción: Genera todas las combinaciones posibles de n elementos a partir de una tabla.
Argumentos:
n (number): El tamaño de cada combinación.table.permute( Table )table.create( Size, Config )Descripción: Crea una tabla de un tamaño específico, llenando cada posición con un valor o una copia de una tabla.
Argumentos:
Size (number): El número de elementos que tendrá la tabla.Config (cualquier tipo): El valor con el que se llenará cada posición.table.replay( Len, ... )Descripción: Repite un conjunto de elementos un número determinado de veces para crear una tabla más grande.
Argumentos:
Len (number): El número de veces que se repetirá la secuencia.... (elementos): Los elementos a repetir.Ejemplo de Uso: table.replay(3, "a", "b") // Devuelve {"a", "b", "a", "b", "a", "b"}
table.string( String, n )Descripción: Divide una cadena de texto en una tabla de sub-cadenas, cada una con una longitud de n caracteres.
Argumentos:
String (string): La cadena de texto a dividir.n (number): El tamaño de cada parte.Ejemplo de Uso: table.string("abcdef", 2) // Devuelve {"ab", "bc", "cd", "de", "ef"}
table.capture( String, Capture )Descripción: Realiza una búsqueda global (gmatch) sobre un texto y devuelve todas las capturas en una tabla.
Argumentos:
String (string): El texto donde buscar.Capture (string): El patrón de búsqueda.Ejemplo de Uso: table.capture("hola 123 mundo", "%d+") // Devuelve {"123"}
table.match( Table, Capture )Descripción: Devuelve una nueva tabla que contiene solo los elementos de la tabla original que coinciden con el valor, tipo o patrón de búsqueda.
Argumentos:
Table (table): La tabla a filtrar.Capture (cualquier tipo): El criterio de coincidencia.table.op( Table, Mode, add )Descripción: Una función "multiherramienta" que realiza diversas operaciones matemáticas o de ordenamiento sobre una tabla.
Argumentos:
Mode (string): La operación a realizar: "sum", "average", "min", "max", "org" (ordenar), "concat", etc.add (varía): Un valor adicional para ciertas operaciones.table.ipol( Table, Size, Tags, algorithm )Descripción: Interpola valores entre los elementos de una tabla. Puede interpolar números, colores, alphas, shapes y clips. Es fundamental para animaciones suaves.
Argumentos:
Size (number): El número de pasos de interpolación.Tags (string | table, opcional): Un tag de ASS (ej. \\fscx) para añadir a cada valor.algorithm (string, opcional): Una fórmula para la aceleración (ej. "sin(pi/2 * %s)").table.filter( Table, Filter )Descripción: Filtra una tabla, devolviendo solo los elementos que cumplen una condición definida por una función.
Argumentos:
Filter (function): Función que recibe (índice, valor) y devuelve true para conservar el elemento.table.random( Table )Descripción: Devuelve un elemento aleatorio de la tabla.
Argumentos:
Table (table): La tabla de la que se elegirá un elemento.table.remember( table_ref, table_val )Descripción: Versión de remember para tablas. Guarda múltiples pares de referencia-valor en la tabla recall de una sola vez.
Argumentos:
table_ref (table): Tabla con los nombres (strings) de las referencias.table_val (table): Tabla con los valores a guardar.