use crate::utils::divmod;
pub fn interval(seconds: usize, human: bool) -> String {
if human && seconds < 60 {
return seconds.to_string() + "s";
}
let (minutes, seconds) = divmod(seconds, 60);
let (hours, minutes) = divmod(minutes, 60);
if hours == 0 {
format!("{:02}:{:02}", minutes, seconds)
} else {
format!("{:02}:{:02}:{:02}", hours, minutes, seconds)
}
}
pub fn size_of(num: f64, divisor: f64) -> String {
let mut value = num;
for i in ["", "K", "M", "G", "T", "P", "E", "Z"] {
if value.abs() < 999.5 {
if value.abs() < 99.95 {
if value.abs() < 9.995 {
return format!("{:1.2}{}", value, i);
}
return format!("{:2.1}{}", value, i);
}
return format!("{:3.0}{}", value, i);
}
value /= divisor;
}
format!("{:3.1}Y", value)
}
pub fn time(seconds: f64) -> String {
let mut value = seconds;
for (d, i) in [(60., "s"), (60., "min"), (24., "hr")] {
if value.abs() < d - 0.005 {
return format!("{:1.2}{}", value, i);
}
value /= d;
}
format!("{:1.2}days", value)
}