From b747ca8af52129876b577a4f20f7105a05c6b002 Mon Sep 17 00:00:00 2001 From: Nathan Reiner Date: Sat, 10 Aug 2024 15:41:31 +0200 Subject: add global fileloader registry --- src/lua/runnable.rs | 4 +++- src/lua/runtime.rs | 17 +++++++++++++---- 2 files changed, 16 insertions(+), 5 deletions(-) (limited to 'src/lua') diff --git a/src/lua/runnable.rs b/src/lua/runnable.rs index adda512..683d191 100644 --- a/src/lua/runnable.rs +++ b/src/lua/runnable.rs @@ -5,6 +5,7 @@ use super::ownedfunction::OwnedFunction; pub trait Runnable where Self: Send, + R: ?Sized { fn run<'lua>(&self, arg: A, lua: &'lua Lua) -> Result where @@ -16,6 +17,7 @@ impl Runnable for T where T: Fn(A) -> R, Self: Send, + R: ?Sized { fn run<'lua>(&self, arg: A, _: &'lua Lua) -> Result where @@ -29,6 +31,7 @@ where impl Runnable for OwnedFunction where Self: Send, + R: ?Sized { fn run<'lua>(&self, arg: A, lua: &'lua Lua) -> Result where @@ -39,4 +42,3 @@ where func.call::(arg) } } - diff --git a/src/lua/runtime.rs b/src/lua/runtime.rs index ce34827..6a0a230 100644 --- a/src/lua/runtime.rs +++ b/src/lua/runtime.rs @@ -3,14 +3,15 @@ use std::time::{SystemTime, UNIX_EPOCH}; use crate::{ config::{self, GlobalConfig}, - sheet::register::Register, state::GlobalState, + sheet::{loader::Loader, register::Register}, + state::GlobalState, }; pub fn neosheet(lua: &Lua) -> Result<()> { let exports = lua.create_table()?; exports - .set("sheets", lua.create_userdata(Register)?) + .set("sheet", lua.create_userdata(Register)?) .unwrap(); exports .set("config", lua.create_userdata(GlobalConfig::default())?) @@ -18,6 +19,9 @@ pub fn neosheet(lua: &Lua) -> Result<()> { exports .set("state", lua.create_userdata(GlobalState::default())?) .unwrap(); + exports + .set("loader", lua.create_proxy::()?) + .unwrap(); lua.globals() .get::<_, Table>("package")? @@ -45,10 +49,15 @@ pub fn package(lua: &Lua) -> Result<()> { package.set( "path", format!( - "{}/?.lua;{}/?/init.lua;{};./?.lua", + "{}/?.lua;{}/?/init.lua;{}/lib/?.lua;{}/lib/?/init.lua;{};./?.lua", + config::constants::USER_CONFIG_DIR.as_str(), + config::constants::USER_CONFIG_DIR.as_str(), config::constants::USER_CONFIG_DIR.as_str(), config::constants::USER_CONFIG_DIR.as_str(), - path.split(';').filter(|s| s.starts_with('/')).collect::>().join(";"), + path.split(';') + .filter(|s| s.starts_with('/')) + .collect::>() + .join(";"), ), )?; Ok(()) -- cgit v1.2.3-70-g09d2