From c7838f952f9e32bb871ea6453595b8b14e8fdd3e Mon Sep 17 00:00:00 2001 From: DanConwayDev Date: Wed, 18 Sep 2024 11:11:41 +0100 Subject: fix(remote): reporter lines on narrow terminals remove the correct number of lines when reporter prints to narrow terminals --- src/bin/git_remote_nostr/utils.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src/bin/git_remote_nostr/utils.rs') diff --git a/src/bin/git_remote_nostr/utils.rs b/src/bin/git_remote_nostr/utils.rs index 3ae1bab..7b5c2d2 100644 --- a/src/bin/git_remote_nostr/utils.rs +++ b/src/bin/git_remote_nostr/utils.rs @@ -384,6 +384,20 @@ pub fn error_might_be_authentication_related(error: &anyhow::Error) -> bool { false } +fn count_lines_per_msg(width: u16, msg: &str, prefix_len: usize) -> usize { + if width == 0 { + return 1; + } + // ((msg_len+prefix) / width).ceil() implemented using Integer Arithmetic + ((msg.chars().count() + prefix_len) + (width - 1) as usize) / width as usize +} + +pub fn count_lines_per_msg_vec(width: u16, msgs: &[String], prefix_len: usize) -> usize { + msgs.iter() + .map(|msg| count_lines_per_msg(width, msg, prefix_len)) + .sum() +} + #[cfg(test)] mod tests { use super::*; -- cgit v1.2.3