diff options
| author | Nathan Reiner <nathan@nathanreiner.xyz> | 2024-07-26 10:32:55 +0200 |
|---|---|---|
| committer | Nathan Reiner <nathan@nathanreiner.xyz> | 2024-07-26 10:32:55 +0200 |
| commit | 6ca07d6af8a338e76817d06c6c6c6f13e64fba9c (patch) | |
| tree | 32680f0942da8c45af8425ebc20330f5456a9213 /src/lua/runtime.rs | |
| parent | 8b7c56df1940d2ac6e3ece3385464009e46382fa (diff) | |
add neosheetrc support
Diffstat (limited to 'src/lua/runtime.rs')
| -rw-r--r-- | src/lua/runtime.rs | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/lua/runtime.rs b/src/lua/runtime.rs new file mode 100644 index 0000000..dfb37e6 --- /dev/null +++ b/src/lua/runtime.rs @@ -0,0 +1,52 @@ +use mlua::{Function, Lua, Result, Table}; +use std::time::{SystemTime, UNIX_EPOCH}; + +use crate::{ + config::{self, GlobalConfig}, + sheet::register::Register, +}; + +pub fn neosheet(lua: &Lua) -> Result<()> { + let exports = lua.create_table()?; + + exports + .set("sheets", lua.create_proxy::<Register>()?) + .unwrap(); + exports + .set("config", lua.create_userdata(GlobalConfig::new())?) + .unwrap(); + + lua.globals() + .get::<_, Table>("package")? + .get::<_, Table>("loaded")? + .set("neosheet", exports)?; + + Ok(()) +} + +pub fn math(lua: &Lua) -> Result<()> { + let math = lua.globals().get::<_, Table>("math"); + let randomseed = math.unwrap().get::<_, Function>("randomseed").unwrap(); + + let seed = SystemTime::now() + .duration_since(UNIX_EPOCH) + .unwrap() + .as_millis(); + randomseed.call::<_, ()>(seed).unwrap(); + Ok(()) +} + +pub fn package(lua: &Lua) -> Result<()> { + let package = lua.globals().get::<_, Table>("package")?; + let path = package.get::<_, String>("path")?; + package.set( + "path", + format!( + "{};{}/?.lua;{}/?/init.lua", + path, + config::constants::USER_CONFIG_DIR.as_str(), + config::constants::USER_CONFIG_DIR.as_str() + ), + )?; + Ok(()) +} |