use mlua::{
Lua,
LuaOptions,
Result as LuaResult,
StdLib,
Table,
};
pub struct LuaEngine
{
lua: Lua,
}
impl LuaEngine
{
pub fn new() -> LuaResult<Self>
{
let lua = Lua::new_with(
StdLib::STRING | StdLib::TABLE | StdLib::MATH,
LuaOptions::default(),
)?;
{
let globals = lua.globals();
let lsv: Table = lua.create_table()?;
let config_fn =
lua.create_function(|_, _tbl: mlua::Value| Ok(true))?;
let mapkey_fn =
lua.create_function(
|_,
(_seq, _action, _desc): (
String,
String,
Option<String>,
)| Ok(true),
)?;
lsv.set("config", config_fn)?;
lsv.set("mapkey", mapkey_fn)?;
globals.set("lsv", lsv)?;
}
Ok(Self { lua })
}
pub fn lua(&self) -> &Lua
{
&self.lua
}
}