diff --git a/CHANGES.md b/CHANGES.md index be186b9..90abc42 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -7,6 +7,7 @@ This project adheres to [Semantic Versioning](http://semver.org/). - Added `Lua.Thread`. - Added `Lua.set_global/3`, `Lua.get_global/2`. - Added `Lua.set_package_path/2`. +- Added `Lua.require!/2`. ## [0.3.0] - 2016-08-08 ### Added diff --git a/README.md b/README.md index 316d0d0..eeb8cc9 100644 --- a/README.md +++ b/README.md @@ -57,12 +57,13 @@ https://hexdocs.pm/exlua/ | `Lua.eval_file` | `luerl:evalfile` | `luaL_dofile` | | `Lua.eval_file!` | `luerl:evalfile` | `luaL_dofile` | | `Lua.gc` | `luerl:gc` | `lua_gc` | +| `Lua.get_global` | `luerl:get_global_key` | `lua_getglobal` | +| `Lua.get_table` | `luerl:get_table` | `lua_gettable` | | `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.get_global` | `luerl:get_global_key` | `lua_getglobal` | -| `Lua.get_table` | `luerl:get_table` | `lua_gettable` | +| `Lua.require!` | - | `luaL_requiref` | | `Lua.set_global` | `luerl:set_global_key` | `lua_setglobal` | | `Lua.set_table` | `luerl:set_table` | `lua_settable` | diff --git a/lib/lua.ex b/lib/lua.ex index 445ebbf..9167b13 100644 --- a/lib/lua.ex +++ b/lib/lua.ex @@ -157,6 +157,12 @@ defmodule Lua do set_table(state, [:package, :path], path) end + @doc "Attempts to load a package of the given name." + @spec require!(Lua.State.t, binary) :: Lua.State.t + def require!(%State{luerl: _} = state, package_name) when is_binary(package_name) do + call_function!(state, :require, [package_name]) + end + @spec wrap_callback(fun) :: fun defp wrap_callback(function) do fn args, state ->