feat(effect): add changes_mode method to Effect trait and use it in ExecuteCommand
Add a `changes_mode` method to the `Effect` trait with a default implementation returning `false` . Implement this method for the `ChangeMode` effect to return `true` . Update the command execution logic to use `e.changes_mode()` instead of string matching on formatted output. Adjust the corresponding test to assert the presence of a mode‑changing effect directly via the new method, removing the temporary debug string. This change introduces a clear, typed way to detect mode‑changing effects, improving readability and reducing reliance on string inspection. Co-Authored-By: fiddlerwoaroof/git-smart-commit (bartowski/nvidia_Nemotron-Cascade-2-30B-A3B-GGUF)
This commit is contained in:
@ -10,6 +10,10 @@ use super::app::{App, AppMode};
|
||||
/// Effects know how to apply themselves to the App.
|
||||
pub trait Effect: Debug {
|
||||
fn apply(&self, app: &mut App);
|
||||
/// Whether this effect changes the app mode.
|
||||
fn changes_mode(&self) -> bool {
|
||||
false
|
||||
}
|
||||
}
|
||||
|
||||
// ── Model mutations ──────────────────────────────────────────────────────────
|
||||
@ -328,6 +332,9 @@ impl Effect for ChangeMode {
|
||||
fn apply(&self, app: &mut App) {
|
||||
app.mode = self.0.clone();
|
||||
}
|
||||
fn changes_mode(&self) -> bool {
|
||||
true
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
|
||||
Reference in New Issue
Block a user