You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
silo/src/scripting/require.rs

29 lines
842 B
Rust

use mlua::{Lua, Result, Table};
use super::log_module::log_module;
use super::path_module::path_module;
use super::silo_module::silo_module;
use super::utils_module::utils_module;
pub fn register_require(lua: &Lua) -> Result<()> {
let globals = lua.globals();
let old_require: mlua::Function = globals.get("require")?;
globals.set("old_require", old_require)?;
globals.set("require", lua.create_function(lua_require)?)?;
Ok(())
}
fn lua_require(lua: &Lua, module: String) -> Result<Table<'_>> {
match module.as_str() {
"silo" => silo_module(lua),
"log" => log_module(lua),
"utils" => utils_module(lua),
"path" => path_module(lua),
_ => {
let old_require: mlua::Function = lua.globals().get("old_require")?;
old_require.call(module)
}
}
}