use crate::progress::{ProgressColumn, Task};
use crate::style::Style;
use crate::text::Text;
#[derive(Debug, Clone)]
pub struct TaskProgressColumn {
pub separator: String,
}
impl TaskProgressColumn {
pub fn new() -> Self {
TaskProgressColumn {
separator: "/".to_string(),
}
}
#[must_use]
pub fn with_separator(mut self, sep: &str) -> Self {
self.separator = sep.to_string();
self
}
}
impl Default for TaskProgressColumn {
fn default() -> Self {
Self::new()
}
}
impl ProgressColumn for TaskProgressColumn {
fn render(&self, task: &Task) -> Text {
let style = Style::parse("progress.percentage");
let completed = task.completed;
let total_str = match task.total {
Some(t) => format!("{t}"),
None => "?".to_string(),
};
Text::new(&format!("{completed}{}{total_str}", self.separator), style)
}
}
#[derive(Debug, Clone)]
pub struct MofNCompleteColumn {
pub separator: String,
}
impl MofNCompleteColumn {
pub fn new() -> Self {
MofNCompleteColumn {
separator: "/".to_string(),
}
}
#[must_use]
pub fn with_separator(mut self, sep: &str) -> Self {
self.separator = sep.to_string();
self
}
}
impl Default for MofNCompleteColumn {
fn default() -> Self {
Self::new()
}
}
impl ProgressColumn for MofNCompleteColumn {
fn render(&self, task: &Task) -> Text {
let completed = task.completed as u64;
let total_str = match task.total {
Some(t) => format!("{}", t as u64),
None => "?".to_string(),
};
let style = Style::parse("progress.percentage");
Text::new(&format!("{completed}{}{total_str}", self.separator), style)
}
}