use mlua::{Lua, Result, Table, Value};
pub(crate) fn loader(lua: &Lua) -> Result<Table> {
let deps = lua.create_table()?;
let assertions = {
let opts = lua.create_table()?;
opts.set("level", 3)?;
lua.load(include_str!("../lua/assertions.lua"))
.set_name("@mlua-stdlib/assertions.lua")
.call::<Value>(opts)?
};
deps.set("assertions", assertions)?;
deps.set("print", lua.create_function(crate::terminal::print)?)?;
deps.set("println", lua.create_function(crate::terminal::println)?)?;
deps.set("style", lua.create_function(crate::terminal::style)?)?;
deps.set("instant", lua.create_function(crate::time::instant)?)?;
lua.load(include_str!("../lua/testing.lua"))
.set_name("@mlua-stdlib/testing.lua")
.call(deps)
}
pub fn register(lua: &Lua, name: Option<&str>) -> Result<Table> {
let name = name.unwrap_or("@testing");
let value = loader(lua)?;
lua.register_module(name, &value)?;
Ok(value)
}