Lua
Lua is an ergonomic interface to Luerl, aiming to be the best way to use Luerl from Elixir.
Features
- Ergonomic API for Elixir <> Lua FFI
- Improved error messages
- Deep-setting variables and state
- Excellent documentation and guides for working with Luerl
Executing Lua
Lua can be run using the eval!/2 function
iex> {[4], _} =
...> Lua.eval!("""
...> return 2 + 2
...> """)
Exposing Elixir functions to Lua
Lua provides the deflua macro for exposing Elixir functions to Lua
defmodule MyAPI do
use Lua.API
deflua double(v), do: 2 * v
end
lua = Lua.new() |> Lua.load_api(MyAPI)
{[10], _} =
Lua.eval!(lua, """
return double(5)
""")
Credits
Lua piggy-backs off of Robert Virding's Luerl project, which implements an Lua lexer, parser, and full-blown lua virtual machine that runs inside the BEAM.