From 4763d8ce3b833df1e7321a407b08666f69657fdb Mon Sep 17 00:00:00 2001 From: Nathan Reiner Date: Thu, 8 Aug 2024 21:46:54 +0200 Subject: refactore runnable --- src/config/keymap/keymap_store.rs | 37 ++++--------------------------------- 1 file changed, 4 insertions(+), 33 deletions(-) (limited to 'src/config/keymap/keymap_store.rs') diff --git a/src/config/keymap/keymap_store.rs b/src/config/keymap/keymap_store.rs index 233ac52..e5e32e5 100644 --- a/src/config/keymap/keymap_store.rs +++ b/src/config/keymap/keymap_store.rs @@ -4,14 +4,13 @@ use std::{ sync::{Arc, Mutex}, }; -use mlua::{Function, RegistryKey, Result}; use ratatui::crossterm::event::KeyEvent; -use crate::lua; +use crate::lua::runnable::Runnable; #[derive(Default, Clone)] pub struct KeyMapStore { - store: Option>>>, + store: Option>>>>, } impl KeyMapStore { @@ -19,7 +18,7 @@ impl KeyMapStore { Self { store: None } } - pub fn get(&mut self, event: KeyEvent) -> Option>> { + pub fn get(&mut self, event: KeyEvent) -> Option>>> { match &self.store { Some(store) => match store.get(&event) { Some(func) => Some(Arc::clone(func)), @@ -32,7 +31,7 @@ impl KeyMapStore { } } - pub fn map(&mut self, event: KeyEvent, func: impl Runnable + 'static) { + pub fn map(&mut self, event: KeyEvent, func: impl Runnable<(), bool> + 'static) { match &self.store { Some(_) => {} None => self.store = Some(HashMap::new()), @@ -44,34 +43,6 @@ impl KeyMapStore { } } -pub trait Runnable -where - Self: Send, -{ - fn run(&self) -> Result; -} - -impl Runnable for T -where - T: Fn() -> bool, - Self: Send, -{ - fn run(&self) -> Result { - Ok(self()) - } -} - -impl Runnable for RegistryKey -where - Self: Send, -{ - fn run(&self) -> Result { - let lua = lua::get(); - let func: Function = lua.registry_value(self)?; - Ok(func.call::<(), bool>(()).unwrap_or(false)) - } -} - impl fmt::Debug for KeyMapStore { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { write!(f, "KeyMapStore") -- cgit v1.2.3-70-g09d2