README.md

ExLua
=====

[![Hex.pm package](https://img.shields.io/hexpm/v/exlua.svg)](https://hex.pm/packages/exlua)
[![Hex.pm downloads](https://img.shields.io/hexpm/dt/exlua.svg)](https://hex.pm/packages/exlua)
[![Hex.pm license](https://img.shields.io/hexpm/l/exlua.svg)](https://unlicense.org/)
[![Travis CI build status](https://img.shields.io/travis/bendiken/exlua/master.svg)](https://travis-ci.org/bendiken/exlua)
[![Coveralls.io code coverage](https://img.shields.io/coveralls/bendiken/exlua/master.svg)](https://coveralls.io/github/bendiken/exlua)
[![Gratipay donations](https://img.shields.io/gratipay/user/bendiken.svg)](https://gratipay.com/~bendiken/)

Lua for Elixir, based on [Luerl](https://github.com/rvirding/luerl).

Examples
--------

```elixir
  [42.0] = Lua.State.new |> Lua.eval!("return 6 * 7")
```

Reference
---------

https://hexdocs.pm/exlua/

| ExLua (Elixir)        | Luerl (Erlang)        | Lua (C)               |
| :-------------------- | :-------------------- | :-------------------- |
| `Lua.Error`           | `{:error, ...}`       | `luaL_error`          |
| `Lua.State.new`       | `luerl:init`          | `luaL_newstate`       |
| `Lua.call_chunk!`     | `luerl:call_chunk`    | `lua_pcall`           |
| `Lua.call_function!`  | `luerl:call_function` | `lua_pcall`           |
| `Lua.eval`            | `luerl:eval`          | `luaL_dostring`       |
| `Lua.eval!`           | `luerl:eval`          | `luaL_dostring`       |
| `Lua.eval_file`       | `luerl:evalfile`      | `luaL_dofile`         |
| `Lua.eval_file!`      | `luerl:evalfile`      | `luaL_dofile`         |
| `Lua.gc`              | `luerl:gc`            | `lua_gc`              |
| `Lua.load`            | `luerl:load`          | `luaL_loadstring`     |
| `Lua.load!`           | `luerl:load`          | `luaL_loadstring`     |
| `Lua.load_file`       | `luerl:loadfile`      | `luaL_loadfile`       |
| `Lua.load_file!`      | `luerl:loadfile`      | `luaL_loadfile`       |
| `Lua.set_table`       | `luerl:set_table`     | `lua_settable`        |

Installation
------------

Add `exlua` to your list of dependencies in your project's `mix.exs` file:

```elixir
defp deps do
  [{:exlua, "~> 0.1.0"},
   {:luerl, github: "rvirding/luerl", tag: "v0.3",
            compile: "make && cp src/luerl.app.src ebin/luerl.app"}]
end
```

Alternatively, to pull in the dependency directly from a Git tag:

```elixir
defp deps do
  [{:exlua, github: "bendiken/exlua", tag: "0.1.0"},
   {:luerl, github: "rvirding/luerl", tag: "v0.3",
            compile: "make && cp src/luerl.app.src ebin/luerl.app"}]
end
```

Alternatively, to pull in the dependency directly from a Git branch:

```elixir
defp deps do
  [{:exlua, github: "bendiken/exlua", branch: "master"},
   {:luerl, github: "rvirding/luerl", tag: "v0.3",
            compile: "make && cp src/luerl.app.src ebin/luerl.app"}]
end
```