eazygit 0.5.1

A fast TUI for Git with staging, conflicts, rebase, and palette-first UX
Documentation
use ratatui::style::Color;

/// Parse a color string into a ratatui Color.
pub fn parse_color(s: &str) -> Color {
    match s.to_lowercase().as_str() {
        "black" => Color::Black,
        "red" => Color::Red,
        "green" => Color::Green,
        "yellow" => Color::Yellow,
        "blue" => Color::Blue,
        "magenta" => Color::Magenta,
        "cyan" => Color::Cyan,
        "gray" | "grey" => Color::Gray,
        "darkgray" | "darkgrey" => Color::DarkGray,
        "lightred" => Color::LightRed,
        "lightgreen" => Color::LightGreen,
        "lightyellow" => Color::LightYellow,
        "lightblue" => Color::LightBlue,
        "lightmagenta" => Color::LightMagenta,
        "lightcyan" => Color::LightCyan,
        "white" => Color::White,
        _ => {
            // Try to parse as hex #RRGGBB
            if s.starts_with('#') && s.len() == 7 {
                if let (Ok(r), Ok(g), Ok(b)) = (
                    u8::from_str_radix(&s[1..3], 16),
                    u8::from_str_radix(&s[3..5], 16),
                    u8::from_str_radix(&s[5..7], 16),
                ) {
                    return Color::Rgb(r, g, b);
                }
            }
            Color::Reset
        }
    }
}

pub fn is_valid_color_str(s: &str) -> bool {
    matches!(
        s.to_lowercase().as_str(),
        "black"
            | "red"
            | "green"
            | "yellow"
            | "blue"
            | "magenta"
            | "cyan"
            | "gray"
            | "grey"
            | "darkgray"
            | "darkgrey"
            | "lightred"
            | "lightgreen"
            | "lightyellow"
            | "lightblue"
            | "lightmagenta"
            | "lightcyan"
            | "white"
    ) || (s.starts_with('#')
        && s.len() == 7
        && u8::from_str_radix(&s[1..3], 16).is_ok()
        && u8::from_str_radix(&s[3..5], 16).is_ok()
        && u8::from_str_radix(&s[5..7], 16).is_ok())
}