Lua

Lua is an ergonomic interface to Luerl, aiming to be the best way to use Luerl from Elixir.

Features

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.