diff --git a/src/app/app.rs b/src/app/app.rs index 7f0e752..973c139 100644 --- a/src/app/app.rs +++ b/src/app/app.rs @@ -1,4 +1,4 @@ -use std::{io, path::PathBuf}; +use std::{collections::HashMap, io, path::PathBuf}; use ratatui::{ DefaultTerminal, Frame, @@ -21,14 +21,28 @@ pub struct App { pub mode: Mode, pub file: Option, pub error_msg: ErrorMessage, + pub vars: HashMap, } impl Widget for &App { fn render(self, area: prelude::Rect, buf: &mut prelude::Buffer) { let len = LEN as u16; - let cell_height = 1; - let cell_length = 10; + let mut cell_height = 1; + let mut cell_length = 10; + + if let Some(h) = self.vars.get("height") { + if let Ok(p) = h.parse::() { + cell_height = p; + } + } + if let Some(l) = self.vars.get("length") { + if let Ok(p) = l.parse::() { + cell_length = p; + } + } + + let x_max = if area.width / cell_length > len { len - 1 } else { area.width / cell_length }; let y_max = if area.height / cell_height > len { len - 1 } else { area.height / cell_height }; @@ -156,6 +170,7 @@ impl App { mode: Mode::Normal, file: None, error_msg: ErrorMessage::none(), + vars: HashMap::new(), } } diff --git a/src/app/mode.rs b/src/app/mode.rs index 7dd4cec..cc25830 100644 --- a/src/app/mode.rs +++ b/src/app/mode.rs @@ -64,7 +64,20 @@ impl Mode { } "q" => app.exit = true, "set" => { - // TODO solve issue #8 + if let Some(arg) = args.get(1) { + let parts: Vec<&str> = arg.split('=').collect(); + if parts.len() != 2 { + app.error_msg = ErrorMessage::new("set ="); + return; + } + let key = parts[0]; + let value = parts[1]; + + app.vars.insert(key.to_owned(), value.to_owned()); + + } + app.error_msg = ErrorMessage::new("set =") + } _ => {} }