#![allow(dead_code)]
use colored::{ColoredString, Colorize};
pub const ICON_SUCCESS: &str = "✓";
pub const ICON_WARNING: &str = "⚠";
pub const ICON_ERROR: &str = "✗";
pub const ICON_INFO: &str = "ℹ";
pub const ICON_PENDING: &str = "⏳";
pub const ICON_TIP: &str = "💡";
pub const ICON_FILE: &str = "📄";
pub const ICON_FOLDER: &str = "📁";
pub struct ColorScheme;
impl ColorScheme {
pub fn success<S: AsRef<str>>(text: S) -> ColoredString {
text.as_ref().green()
}
pub fn warning<S: AsRef<str>>(text: S) -> ColoredString {
text.as_ref().yellow()
}
pub fn error<S: AsRef<str>>(text: S) -> ColoredString {
text.as_ref().red()
}
pub fn info<S: AsRef<str>>(text: S) -> ColoredString {
text.as_ref().blue()
}
pub fn highlight<S: AsRef<str>>(text: S) -> ColoredString {
text.as_ref().magenta()
}
pub fn dimmed<S: AsRef<str>>(text: S) -> ColoredString {
text.as_ref().dimmed()
}
pub fn number<S: AsRef<str>>(text: S) -> ColoredString {
text.as_ref().cyan()
}
pub fn bold<S: AsRef<str>>(text: S) -> ColoredString {
text.as_ref().bold()
}
pub fn success_msg<S: AsRef<str>>(text: S) -> String {
format!("{} {}", ICON_SUCCESS.green(), text.as_ref().green())
}
pub fn warning_msg<S: AsRef<str>>(text: S) -> String {
format!("{} {}", ICON_WARNING.yellow(), text.as_ref().yellow())
}
pub fn error_msg<S: AsRef<str>>(text: S) -> String {
format!("{} {}", ICON_ERROR.red(), text.as_ref().red())
}
pub fn info_msg<S: AsRef<str>>(text: S) -> String {
format!("{} {}", ICON_INFO.blue(), text.as_ref().blue())
}
pub fn tip_msg<S: AsRef<str>>(text: S) -> String {
format!("{} {}", ICON_TIP, text.as_ref())
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_color_scheme() {
let _ = ColorScheme::success("test");
let _ = ColorScheme::warning("test");
let _ = ColorScheme::error("test");
let _ = ColorScheme::info("test");
let _ = ColorScheme::highlight("test");
let _ = ColorScheme::dimmed("test");
let _ = ColorScheme::number("test");
let _ = ColorScheme::bold("test");
}
#[test]
fn test_message_formats() {
let success = ColorScheme::success_msg("Done");
assert!(success.contains(ICON_SUCCESS));
let warning = ColorScheme::warning_msg("Caution");
assert!(warning.contains(ICON_WARNING));
let error = ColorScheme::error_msg("Failed");
assert!(error.contains(ICON_ERROR));
}
}