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
}