From 492a789109276a05dee8b9793927e8ffd5caa9ae Mon Sep 17 00:00:00 2001 From: rhpidfyre Date: Sat, 4 Jan 2025 18:50:24 -0500 Subject: [PATCH] mod.rs for vm --- src/lib.rs | 15 +++----- src/session.rs | 2 +- src/{luau => vm}/alias.rs | 0 src/{luau/vm.rs => vm/mod.rs} | 68 +++++++++++++++++------------------ src/{luau => vm}/shell.rs | 0 src/{luau => vm}/terminal.rs | 2 ++ 6 files changed, 41 insertions(+), 46 deletions(-) rename src/{luau => vm}/alias.rs (100%) rename src/{luau/vm.rs => vm/mod.rs} (70%) rename src/{luau => vm}/shell.rs (100%) rename src/{luau => vm}/terminal.rs (98%) diff --git a/src/lib.rs b/src/lib.rs index 9d7f1ad..15b68d8 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,15 +1,8 @@ pub const VERSION: &str = env!("CARGO_PKG_VERSION"); pub mod session; -mod commands; -mod ps; -mod rc; +pub mod commands; +pub mod ps; +pub mod rc; -#[path = "./luau/vm.rs"] -mod vm; -#[path = "./luau/alias.rs"] -mod alias; -#[path = "./luau/terminal.rs"] -mod terminal; -#[path = "./luau/shell.rs"] -mod shell; \ No newline at end of file +pub mod vm; \ No newline at end of file diff --git a/src/session.rs b/src/session.rs index 22fdc2f..5ca60c4 100644 --- a/src/session.rs +++ b/src/session.rs @@ -1,4 +1,4 @@ -use crate::{commands, ps, rc, vm::{self, LuauVm}}; +use crate::{commands, ps, rc, vm::{LuauVm, self}}; use std::{fs, io::{self}}; pub struct Config { diff --git a/src/luau/alias.rs b/src/vm/alias.rs similarity index 100% rename from src/luau/alias.rs rename to src/vm/alias.rs diff --git a/src/luau/vm.rs b/src/vm/mod.rs similarity index 70% rename from src/luau/vm.rs rename to src/vm/mod.rs index be616d2..a87ffb9 100644 --- a/src/luau/vm.rs +++ b/src/vm/mod.rs @@ -1,38 +1,14 @@ use mlua::{ - Lua as Luau, - Result as lResult, - Function, - MultiValue, - Table + Function, Lua as Luau, MultiValue, Result as lResult, Table, Value }; -use crate::{sytem::System, terminal::TerminalColors, VERSION}; +use crate::vm::{shell::System, terminal::Terminal}; +use crate::VERSION; use color_print::{cformat, cprintln}; use core::fmt; -trait Globals { - fn warn(&self, luau_globals: &Table) -> lResult<()>; - fn version(&self, luau_globals: &Table) -> lResult<()>; -} -impl Globals for LuauVm { - fn warn(&self, luau_globals: &Table) -> lResult<()> { - let luau_print = luau_globals.get::("print")?; - luau_globals.set("warn", self.0.create_function(move |this, args: MultiValue| -> lResult<()> { - let luau_multi_values = args.into_iter() - .map(|value| cformat!("{}", value.to_string().unwrap_or("".to_owned()))) - .collect::>(); - let back_to_luau_multi = luau_multi_values.into_iter() - .map(|arg_v| mlua::Value::String(this.create_string(&arg_v).unwrap())) - .collect::(); - luau_print.call::<()>(back_to_luau_multi).unwrap(); - Ok(()) - })?) - } - - fn version(&self, luau_globals: &Table) -> lResult<()> { - let luau_info = luau_globals.get::("_VERSION")?; - luau_globals.set("_VERSION", format!("{}, liblambdashell {}", luau_info, VERSION)) - } -} +mod shell; +mod terminal; +mod alias; trait Helpers { fn option_display_none(&self, err: E) -> Option; @@ -43,23 +19,47 @@ impl Helpers for LuauVm { println!("{err}"); None } + fn luau_error(&self, err: mlua::Error) -> Option { cprintln!("====\n[!]: {err}\n===="); None } } +trait Globals { + fn global_warn(&self, luau_globals: &Table) -> lResult<()>; + fn global_version(&self, luau_globals: &Table) -> lResult<()>; +} +impl Globals for LuauVm { + fn global_warn(&self, luau_globals: &Table) -> lResult<()> { + let luau_print = luau_globals.get::("print")?; + luau_globals.set("warn", self.0.create_function(move |this, args: MultiValue| -> lResult<()> { + let luau_multi_values = args.into_iter() + .map(|value| cformat!("{}", value.to_string().unwrap_or("".to_owned()))) + .map(|arg_v| Value::String(this.create_string(arg_v).unwrap())) + .collect::(); + luau_print.call::<()>(luau_multi_values).unwrap(); + Ok(()) + })?) + } + + fn global_version(&self, luau_globals: &Table) -> lResult<()> { + let luau_info = luau_globals.get::("_VERSION")?; + luau_globals.set("_VERSION", format!("{}, liblambdashell {}", luau_info, VERSION)) + } +} + pub struct LuauVm(pub Luau); impl LuauVm { - pub fn new() -> Self { + pub(crate) fn new() -> Self { Self(Luau::new()) } fn set_shell_globals(&self) -> lResult<()> { let luau_globals = self.0.globals(); - self.warn(&luau_globals)?; - self.version(&luau_globals)?; - self.terminal(&luau_globals)?; + self.global_warn(&luau_globals)?; + self.global_version(&luau_globals)?; + self.global_terminal(&luau_globals)?; self.shell_globals(&luau_globals)?; luau_globals.set("getfenv", mlua::Nil)?; luau_globals.set("setfenv", mlua::Nil)?; diff --git a/src/luau/shell.rs b/src/vm/shell.rs similarity index 100% rename from src/luau/shell.rs rename to src/vm/shell.rs diff --git a/src/luau/terminal.rs b/src/vm/terminal.rs similarity index 98% rename from src/luau/terminal.rs rename to src/vm/terminal.rs index f0eae64..72e1f1f 100644 --- a/src/luau/terminal.rs +++ b/src/vm/terminal.rs @@ -25,6 +25,7 @@ macro_rules! background_styles_luau { }; } +#[allow(dead_code)] trait Colors { fn background(&self, style_table: &Table) -> lResult<()>; fn foreground(&self, style_table: &Table) -> lResult<()>; @@ -69,6 +70,7 @@ impl Colors for LuauVm { } } +#[allow(dead_code)] trait Write { fn write(&self, term_out_table: &Table) -> lResult<()>; }