fn parse_fish_color_from_string()

in crates/shell-color/src/lib.rs [405:430]


fn parse_fish_color_from_string(s: &str, color_support: ColorSupport) -> Option<Color> {
    let mut first_rgb = None;
    let mut first_named = None;

    for color_name in s.split([' ', '\t']) {
        if !color_name.starts_with('-') {
            let mut color = try_parse_named(color_name);
            if color.is_none() {
                color = try_parse_rgb(color_name);
            }
            if let Some(color) = color {
                if first_rgb.is_none() && color.kind == ColorType::Rgb {
                    first_rgb = Some(color);
                } else if first_named.is_none() && color.kind == ColorType::Named {
                    first_named = Some(color);
                }
            }
        }
    }

    if (first_rgb.is_some() && color_support.contains(ColorSupport::TERM24BIT)) || first_named.is_none() {
        return first_rgb;
    }

    first_named
}