View Source Luex.Table.Array (luex v0.0.2)
access Lua arrays (heavy wip state)
Lua arrays are tables with their keys being the integer index of a stored value
Link to this section Summary
Functions
append lua value to a lua array
folds the array from the lowest to the hightest index
check if a table is a well formed lua array.
build a lua array from elixir list
build a elixir list from a lua array
Link to this section Types
@type folder(acc) :: (index :: Luex.lua_number(), element :: Luex.lua_value(), acc -> acc)
Link to this section Functions
@spec append(Luex.vm(), Luex.lua_table(), Luex.lua_value()) :: Luex.vm()
append lua value to a lua array
Example
iex> %Luex.CallResult{vm: vm} = Luex.init() |> Luex.do_inline("""
...> numbers = {"eins", "zwei"}
...> """)
iex> %Luex.CallResult{return: numbers, vm: vm} = Luex.get_value(vm, ["numbers"])
iex> vm = Luex.Table.Array.append(vm, numbers, "drei")
iex> Luex.Table.get_data(vm, numbers)
%{1 => "eins", 2 => "zwei", 3 => "drei"}
@spec fold(Luex.vm(), Luex.lua_table(), acc, folder(acc)) :: acc when acc: any()
folds the array from the lowest to the hightest index
Example
iex> %Luex.CallResult{return: [numbers], vm: vm} = Luex.init() |> Luex.do_inline("""
...> numbers = {"eins", "zwei", "drei"}
...> return numbers
...> """)
iex> Luex.Table.Array.fold(vm, numbers, "null", fn _index, value, acc -> "#{acc}, #{value}" end)
"null, eins, zwei, drei"
@spec lua_array?(Luex.vm(), Luex.lua_table()) :: boolean()
check if a table is a well formed lua array.
Example
iex> %Luex.CallResult{return: [array], vm: vm} = Luex.init() |> Luex.do_inline("""
...> return {"a", "b", "c"};
...> """)
iex> Luex.Table.Array.lua_array?(vm, array)
true
iex> %Luex.CallResult{return: [no_array], vm: vm} = Luex.init() |> Luex.do_inline("""
...> return { a = 123; b = 567; };
...> """)
iex> Luex.Table.Array.lua_array?(vm, no_array)
false
@spec new(Luex.vm(), [Luex.lua_value()]) :: Luex.lua_call(Luex.lua_table())
build a lua array from elixir list
@spec to_list(Luex.vm(), Luex.lua_table()) :: [Luex.lua_value()]
build a elixir list from a lua array
Example
iex> %Luex.CallResult{return: [array], vm: vm} = Luex.init() |> Luex.do_inline("""
...> return {"a", "b", "c"};
...> """)
iex> Luex.Table.Array.to_list(vm, array)
["a", "b", "c"]