1use std::fmt;
2
3use colored::Colorize;
4
5pub fn limit_string(max: usize, input: impl ToString, pad: impl Into<Option<char>>) -> String {
6 let input = input.to_string();
7 let pad = pad.into().unwrap_or(' ');
8
9 let truncated: String = input.chars().take(max).collect();
10 let pad_len = max.saturating_sub(truncated.chars().count());
11
12 truncated + &pad.to_string().repeat(pad_len)
13}
14
15pub fn line_err(error: impl ToString) -> String {
16 format!("[{}] {}", dt_now_rfc2822(), error.to_string().red())
17}
18
19pub fn line_ok(info: impl fmt::Display) -> String {
20 format!("[{}] {info}", dt_now_rfc2822())
21}
22
23pub fn dt_now_rfc2822() -> impl fmt::Display {
24 chrono::Local::now().to_rfc2822().dimmed()
25}