From 794c96bff4109a2a352358e0b4107d9360e4e461 Mon Sep 17 00:00:00 2001 From: Rushmore75 Date: Tue, 11 Nov 2025 09:51:00 -0700 Subject: [PATCH] close #8 --- src/app/app.rs | 21 ++++++++++++++++++--- src/app/mode.rs | 15 ++++++++++++++- 2 files changed, 32 insertions(+), 4 deletions(-) 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 =") + } _ => {} }