pub mod contrib;
mod convert;
mod environment;
mod state;
use mlua::LuaSerdeExt;
pub use crate::{environment::LuaEnvironment, state::LuaState};
#[cfg_attr(feature = "module", mlua::lua_module(name = "minijinja"))]
pub fn minijinja_lua(lua: &mlua::Lua) -> mlua::Result<mlua::Table> {
let table = lua.create_table()?;
table.set(
"type",
lua.create_function(|_, val: mlua::Value| contrib::minijinja_types(&val))?,
)?;
let path_loader = contrib::minijinja_path_loader(lua)?;
table.set(
"path_loader",
lua.create_function(move |_, val: mlua::Value| -> Result<mlua::Function, _> {
path_loader.call(val)
})?,
)?;
table.set("None", lua.null())?;
table.set("Environment", lua.create_proxy::<LuaEnvironment>()?)?;
Ok(table)
}