View Source Lua.Table (Lua v0.0.22)
In Lua, tables are the fundamental datastructure, which are used both as associative arrays (maps), and arrays (lists).
Lua.Table
provides some utilities for working with Lua tables when passed back to
Elixir.
Summary
Functions
Converts a Lua table into a list. Assumes that the table is correctly ordered.
Converts a Lua table into a map
Converts a Lua table into a string representing a Lua table literal
Converts a Lua table into more "native" feeling lists and maps, deeply traversing any sub-tables.
Functions
Converts a Lua table into a list. Assumes that the table is correctly ordered.
iex> Lua.Table.as_list([{1, "a"}, {2, "b"}, {3, "c"}])
["a", "b", "c"]
To ensure the list is ordered, you can pass the :sort
option
iex> Lua.Table.as_list([{2, "b"}, {1, "a"}, {3, "c"}])
["b", "a", "c"]
iex> Lua.Table.as_list([{2, "b"}, {1, "a"}, {3, "c"}], sort: true)
["a", "b", "c"]
Converts a Lua table into a map
iex> Lua.Table.as_map([{"a", 1}, {"b", 2}])
%{"a" => 1, "b" => 2}
Converts a Lua table into a string representing a Lua table literal
iex> Lua.Table.as_string([{"a", 1}, {"b", 2}])
"{a = 1, b = 2}"
Lists that "look" like Lua tables are treated as lists
iex> Lua.Table.as_string([{1, "foo"}, {2, "bar"}])
~S[{"foo", "bar"}]
Lists are treated as lists
iex> Lua.Table.as_string(["a", "b", "c"])
~S[{"a", "b", "c"}]
Regular maps are always treated as tables
iex> Lua.Table.as_string(%{1 => "foo", "bar" => "baz"})
~S<{[1] = "foo", bar = "baz"}>
Options
:formatter
- A 2-arity function used to format values before serialization. The key and value are passed as arguments. If there is no key, it will default tonil
.
Converts a Lua table into more "native" feeling lists and maps, deeply traversing any sub-tables.
It uses the heuristic that maps with integer keys starting as 1 will be auto-cast into lists
iex> Lua.Table.deep_cast([{"a", 1}, {"b", [{1, 3}, {2, 4}]}])
%{"a" => 1, "b" => [3, 4]}