Remove "exercises" from the end of the progress bar

This commit is contained in:
mo8it 2024-09-01 22:04:09 +02:00
parent 86fc573d7a
commit a8b13f5a82

View file

@ -5,7 +5,7 @@ use std::{
use crossterm::{ use crossterm::{
cursor::MoveTo, cursor::MoveTo,
style::{Attribute, Color, ResetColor, SetAttribute, SetForegroundColor}, style::{Attribute, Color, SetAttribute, SetForegroundColor},
terminal::{Clear, ClearType}, terminal::{Clear, ClearType},
Command, QueueableCommand, Command, QueueableCommand,
}; };
@ -93,20 +93,19 @@ pub fn progress_bar<'a>(
total: u16, total: u16,
line_width: u16, line_width: u16,
) -> io::Result<()> { ) -> io::Result<()> {
debug_assert!(total < 1000);
debug_assert!(progress <= total); debug_assert!(progress <= total);
const PREFIX: &[u8] = b"Progress: ["; const PREFIX: &[u8] = b"Progress: [";
const PREFIX_WIDTH: u16 = PREFIX.len() as u16; const PREFIX_WIDTH: u16 = PREFIX.len() as u16;
// Leaving the last char empty (_) for `total` > 99. const POSTFIX_WIDTH: u16 = "] xxx/xxx".len() as u16;
const POSTFIX_WIDTH: u16 = "] xxx/xx exercises_".len() as u16;
const WRAPPER_WIDTH: u16 = PREFIX_WIDTH + POSTFIX_WIDTH; const WRAPPER_WIDTH: u16 = PREFIX_WIDTH + POSTFIX_WIDTH;
const MIN_LINE_WIDTH: u16 = WRAPPER_WIDTH + 4; const MIN_LINE_WIDTH: u16 = WRAPPER_WIDTH + 4;
if line_width < MIN_LINE_WIDTH { if line_width < MIN_LINE_WIDTH {
writer.write_ascii(b"Progress: ")?; writer.write_ascii(b"Progress: ")?;
// Integers are in ASCII. // Integers are in ASCII.
writer.write_ascii(format!("{progress}/{total}").as_bytes())?; return writer.write_ascii(format!("{progress}/{total}").as_bytes());
return writer.write_ascii(b" exercises");
} }
let stdout = writer.stdout(); let stdout = writer.stdout();
@ -133,8 +132,9 @@ pub fn progress_bar<'a>(
} }
} }
stdout.queue(ResetColor)?; stdout.queue(SetForegroundColor(Color::Reset))?;
write!(stdout, "] {progress:>3}/{total} exercises")
write!(stdout, "] {progress:>3}/{total}")
} }
pub fn clear_terminal(stdout: &mut StdoutLock) -> io::Result<()> { pub fn clear_terminal(stdout: &mut StdoutLock) -> io::Result<()> {