summaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
authorNamilskyy <alive6863@gmail.com>2025-11-22 22:17:43 +0300
committerNamilskyy <alive6863@gmail.com>2025-11-22 22:52:57 +0300
commit2e6320185ba358368506fd8b8f2fdae9763447b0 (patch)
tree98a8340970b9872eaea6c0628d6a168a53fb1ffc /src/main.rs
parent48c25e1fe126d45f5c75ea184c3d3ed244194a66 (diff)
Fixed tearing in output
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs19
1 files changed, 14 insertions, 5 deletions
diff --git a/src/main.rs b/src/main.rs
index 308e6db..615ed4a 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -39,7 +39,13 @@ use clap::{Parser, Subcommand};
mod parser;
mod shared;
-use parser::{generate_config, get_config, parse_weather, Config};
+use parser::{generate_config,
+ get_config,
+ parse_weather,
+ Config,
+ visible_length,
+ pad_with_ansi};
+
use shared::WeatherData;
use crate::parser::{determine_weather_type, prepare_art};
@@ -216,7 +222,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
let art_lines: Vec<&str> = art_string.lines().collect();
- let max_art_width = art_lines.iter().map(|line| line.len()).max().unwrap_or(0);
+ let max_art_width = art_lines.iter().map(|line| visible_length(line)).max().unwrap_or(0);
let max_lines = art_lines.len().max(table_lines.len());
@@ -224,8 +230,10 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
let art_part = art_lines.get(i).unwrap_or(&"");
let table_part = table_lines.get(i).map(|s| s.as_str()).unwrap_or("");
- println!("{:<width$} {}", art_part, table_part, width = max_art_width);
+ let padded_art = pad_with_ansi(art_part, max_art_width);
+ println!("{} {}", padded_art, table_part);
}
+
Ok(())
}
Some(Commands::Tomorrow) => {
@@ -239,7 +247,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
let art_lines: Vec<&str> = art_string.lines().collect();
- let max_art_width = art_lines.iter().map(|line| line.len()).max().unwrap_or(0);
+ let max_art_width = art_lines.iter().map(|line| visible_length(line)).max().unwrap_or(0);
let max_lines = art_lines.len().max(table_lines.len());
@@ -247,7 +255,8 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
let art_part = art_lines.get(i).unwrap_or(&"");
let table_part = table_lines.get(i).map(|s| s.as_str()).unwrap_or("");
- println!("{:<width$} {}", art_part, table_part, width = max_art_width);
+ let padded_art = pad_with_ansi(art_part, max_art_width);
+ println!("{} {}", padded_art, table_part);
}
Ok(())
}