Module table
Tables utilities module
Functions
concat (tbl1, tbl2, force) | Concat tbl2 into tbl1 Values from tbl1 will be taken over values from tbl2 unless ‘force’ argument is set to true |
contains (tbl, key) | Check if a table contains a key If the key is associated to a nil value, it will be considered as not here |
find (tbl, value) | Finds a key that is associated to the given value The first founded key with the value will be returned |
copy (tbl) | Deep copy a table with all its content |
allOf (tbl, fn, ...) | Ensure every key/value pair of tbl produce a true return of fn |
anyOf (tbl, fn, ...) | Check if one of the key/value pair of tbl produce a true return of fn |
noneOf (tbl, fn, ...) | Check if all of tbl’s key/value pais produce a false return of fn |
forEach (tbl, fn, ...) | Execute a function with all key/value pair of a table |
Functions
- concat (tbl1, tbl2, force)
-
Concat tbl2 into tbl1
Values from tbl1 will be taken over values from tbl2 unless ‘force’ argument is set to trueParameters:
- tbl1 table The first table to concat the second into
- tbl2 table The second table to concat into the first
- force ? boolean If tbl2 values should be taking over values from tbl1
Returns:
-
table # A new table with tbl2 concat into tbl1
Raises:
error if tbl1 is not a table
error if tbl2 is not a table
error if force is not a booleanUsage:
local tbl1 = { one = 1, three = 3 } local tbl2 = { two = 2, 4 = "four" } local tbl3 = concat(tbl1, tbl2) -- tbl3 -> { one = 1, three = 3, two = 2, 4 = "four" }
- contains (tbl, key)
-
Check if a table contains a key
If the key is associated to a nil value, it will be considered as not hereParameters:
- tbl table The table to search the key in
- key any The key to search in the table. This cannot be nil
Returns:
-
boolean # true if tbl contains the key key
Raises:
error if tbl is not a table
error if key is nilUsage:
local tbl = { 1 = "one", "two" = 2 } if not contains(tbl, "two") then print("Table has no entry 'two'") else print("Table has an entry 'two'") end
- find (tbl, value)
-
Finds a key that is associated to the given value
The first founded key with the value will be returnedParameters:
- tbl table The table to search the value in
- value any The value to search in the table. This cannot be nil
Returns:
-
any|nil # The first key found with the given value if any, nil otherwise
Raises:
error if tbl is not a table
error if value is nilUsage:
local tbl = { 1 = "one", 2 = "two" } print(find(tbl, "two")) -- 2
- copy (tbl)
-
Deep copy a table with all its content
Parameters:
- tbl table The table to copy
Returns:
-
table # A new table that is a clone of tbl
Raises:
error if tbl is not a tableUsage:
local tbl = { one = 1, two = 2 } local tbl_copy = copy(tbl) tbl["one"] = 11 print(tbl["one"]) -- 11 print(tbl_copy["one"]) -- 1
- allOf (tbl, fn, ...)
-
Ensure every key/value pair of tbl produce a true return of fn
Parameters:
- tbl table The tbl to test key/value pairs with fn
- fn
function The function to call with tbl’s key/value pairs.
This function should return a boolean and take a key of tbl as first argument and a value of tbl as second argument - ... any Additional arguments to pass to fn
Returns:
-
boolean # true if all call of fn with each of tbl’s key/value pairs returned true, false otherwise
Raises:
error if tbl is not a table
error if fn is not a function
error if fn returned something else than a booleanUsage:
local tbl = { one = 1, two = 2 } if allOf(tbl, function(key, value) return type(value) == "number" end) print("All table values are numbers") else print("One or more table value(s) is not a number") end
- anyOf (tbl, fn, ...)
-
Check if one of the key/value pair of tbl produce a true return of fn
Parameters:
- tbl table The tbl to test key/value pairs with fn
- fn
function The function to call with tbl’s key/value pairs.
This function should return a boolean and take a key of tbl as first argument and a value of tbl as second argument - ... any Additional arguments to pass to fn
Returns:
-
boolean # true if one of the calls of fn with each of tbl’s key/value pairs returned true, false otherwise
Raises:
error if tbl is not a table
error if fn is not a function
error if fn returned something else than a booleanUsage:
local tbl = { one = 1, two = 2, hello = "world" } if anyOf(tbl, function(key, value) return type(value) == "string" end) print("One or more of the table value(s) is a string") else print("None of the table value is a string") end
- noneOf (tbl, fn, ...)
-
Check if all of tbl’s key/value pais produce a false return of fn
Parameters:
- tbl table The tbl to test key/value pairs with fn
- fn
function The function to call with tbl’s key/value pairs.
This function should return a boolean and take a key of tbl as first argument and a value of tbl as second argument - ... any Additional arguments to pass to fn
Returns:
-
boolean # true if none of the calls of fn with each of tbl’s key/value returned true, false otherwise
Raises:
error if tbl is not a table
error if fn is not a function
error if fn returned something else than a booleanUsage:
local tbl = { one = 1, two = 2 } if noneOf(tbl, function(key, value) return type(value) == "string" end) print("The table does not contains string values") end
- forEach (tbl, fn, ...)
-
Execute a function with all key/value pair of a table
Parameters:
- tbl table The tbl to test key/value pairs with fn
- fn
function The function to call with tbl’s key/value pairs.
This function should take a key of tbl as first argument and a value of tbl as second argument - ... any Additional arguments to pass to fn
Raises:
error if tbl is not a table
error if fn is not a functionUsage:
local tbl = { one = 1, two = 2 } forEach(tbl, function(key, value) print(key .. ": " .. value) end) -- one: 1 -- two: 2