Skip to main content

minijinja_lua/
lib.rs

1// SPDX-License-Identifier: MIT
2
3mod contrib;
4mod convert;
5mod environment;
6mod state;
7
8use mlua::prelude::{Lua, LuaFunction, LuaResult, LuaTable, LuaValue};
9
10pub use crate::environment::LuaEnvironment;
11
12#[cfg_attr(feature = "module", mlua::lua_module(name = "minijinja"))]
13pub fn minijinja_lua(lua: &Lua) -> LuaResult<LuaTable> {
14    let table = lua.create_table()?;
15
16    table.set(
17        "type",
18        lua.create_function(|_, val: LuaValue| contrib::minijinja_types(&val))?,
19    )?;
20
21    let path_loader = contrib::minijinja_path_loader(lua)?;
22    table.set(
23        "path_loader",
24        lua.create_function(move |_, val: LuaValue| -> Result<LuaFunction, _> {
25            path_loader.call(val)
26        })?,
27    )?;
28
29    table.set("None", LuaValue::NULL)?;
30    table.set("Environment", lua.create_proxy::<LuaEnvironment>()?)?;
31
32    Ok(table)
33}