Lunar (Lunar v1.0.2)

Let's get this party started!

Summary

Functions

A convenience function for copying a Lunar runtime and setting a new id

Initialize a new Lunar runtime

Load Lua code into state from file.

Load a Lunar.Library into state.

Evaluate Lua code within a given Lunar

Encodes an Elixir value and makes it available at the key/path.

Types

@type error() :: {:error, atom() | String.t()}
@type result() :: {:ok, t()}
@type t() :: %Lunar{
  id: nil | String.t(),
  lua_files: [String.t()],
  modules: [Lunar.Library.t()],
  state: tuple(),
  variables: %{required([String.t()]) => any()}
}

Functions

A convenience function for copying a Lunar runtime and setting a new id

Link to this function

get_variable(lunar, key)

@spec get_variable(t(), [String.t()] | String.t()) :: result() | error()
@spec init() :: t()

Initialize a new Lunar runtime

Link to this function

load_lua!(lunar, path)

@spec load_lua!(t(), String.t()) :: t()

Load Lua code into state from file.

Link to this function

load_module!(lunar, module)

@spec load_module!(t(), Lunar.Library.t()) :: t()

Load a Lunar.Library into state.

Examples

iex> lunar = Lunar.init() iex> lunar = Lunar.load_module!(lunar, Math)

Link to this function

run(lunar, lua)

@spec run(t(), String.t()) :: {:ok, any(), t()} | error()

Evaluate Lua code within a given Lunar

Examples

iex> lunar = Lunar.init() iex> lunar = Lunar.load_module!(lunar, Math) iex> {:ok, lunar} = Lunar.set_variable(lunar, a, 1) iex> {:ok, [10], _lunar} = Lunar.run(lunar, "return Math.add(a, 9)")

Link to this function

set_variable(lunar, key, value)

@spec set_variable(t(), [String.t()] | String.t(), any()) :: result() | error()

Encodes an Elixir value and makes it available at the key/path.

Examples

iex> lunar = Lunar.init() iex> lunar = Lunar.set_variable(lunar, "a", 1)