aboutsummaryrefslogtreecommitdiff
path: root/mingling/src/setups
diff options
context:
space:
mode:
author魏曹先生 <1992414357@qq.com>2026-06-24 12:01:38 +0800
committer魏曹先生 <1992414357@qq.com>2026-06-24 12:01:38 +0800
commit1d1baf75a3acb5eb32913a8bdad42bae42844aa2 (patch)
tree5dafbcbce48a5de3c61bba0c7d309e97dd80b1ce /mingling/src/setups
parentaddfbbf0b33a6251605990da73c2de5131766827 (diff)
Redesign hook system with structured info types and ProgramControls
Diffstat (limited to 'mingling/src/setups')
-rw-r--r--mingling/src/setups/exit_code.rs11
-rw-r--r--mingling/src/setups/repl_basic.rs11
2 files changed, 14 insertions, 8 deletions
diff --git a/mingling/src/setups/exit_code.rs b/mingling/src/setups/exit_code.rs
index ed8204c..025ed8a 100644
--- a/mingling/src/setups/exit_code.rs
+++ b/mingling/src/setups/exit_code.rs
@@ -1,6 +1,11 @@
use std::marker::PhantomData;
-use mingling_core::{ProgramCollect, hook::ProgramHook, setup::ProgramSetup, this};
+use mingling_core::{
+ ProgramCollect,
+ hook::{ProgramControlUnit, ProgramHook},
+ setup::ProgramSetup,
+ this,
+};
use crate::res::ResExitCode;
@@ -32,9 +37,9 @@ where
program.with_resource(ResExitCode { exit_code: 0 });
// Insert hook to override exit code before program ends
- program.with_hook(ProgramHook::empty().on_finish(|| {
+ program.with_hook(ProgramHook::empty().on_finish(|_| {
let this = this::<C>().res_or_default::<ResExitCode>();
- this.exit_code
+ ProgramControlUnit::OverrideExitCode(this.exit_code)
}));
}
}
diff --git a/mingling/src/setups/repl_basic.rs b/mingling/src/setups/repl_basic.rs
index 8b9b83f..71a38d2 100644
--- a/mingling/src/setups/repl_basic.rs
+++ b/mingling/src/setups/repl_basic.rs
@@ -9,7 +9,7 @@ where
C: ProgramCollect<Enum = C>,
{
fn setup(self, program: &mut Program<C>) {
- program.with_hook(ProgramHook::empty().on_repl_readline(|| readline().ok()));
+ program.with_hook(ProgramHook::empty().on_repl_readline(|_| readline().ok()));
}
}
@@ -48,7 +48,7 @@ where
print!("{}", PROMPT.get().unwrap());
let _ = std::io::stdout().flush();
}
- program.with_hook(ProgramHook::empty().on_repl_pre_readline(print_prompt));
+ program.with_hook(ProgramHook::empty().on_repl_pre_readline(|_| print_prompt()));
}
BasicREPLPromptSetup::Func(f) => {
static FUNC: std::sync::OnceLock<fn() -> String> = std::sync::OnceLock::new();
@@ -57,7 +57,8 @@ where
print!("{}", FUNC.get().unwrap()());
let _ = std::io::stdout().flush();
}
- program.with_hook(ProgramHook::empty().on_repl_pre_readline(print_func_prompt));
+ program
+ .with_hook(ProgramHook::empty().on_repl_pre_readline(|_| print_func_prompt()));
}
}
}
@@ -71,8 +72,8 @@ where
{
fn setup(self, program: &mut Program<C>) {
program.with_hook(ProgramHook::empty().on_repl_receive_result(|r| {
- if !r.is_empty() {
- println!("{}", r.trim())
+ if !r.result.is_empty() {
+ println!("{}", r.result.trim())
}
}));
}