standout-render 10.0.0

Styled terminal rendering with templates, themes, and adaptive color support
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum IconMode {
    Classic,
    NerdFont,
    Auto,
}

pub(crate) fn probe_icon_mode() -> IconMode {
    resolve_auto()
}

fn resolve_auto() -> IconMode {
    icon_mode_from_nerd_font_var(std::env::var("NERD_FONT").ok().as_deref())
}

fn icon_mode_from_nerd_font_var(val: Option<&str>) -> IconMode {
    match val {
        Some(val)
            if val == "1"
                || val.eq_ignore_ascii_case("true")
                || val.eq_ignore_ascii_case("yes") =>
        {
            IconMode::NerdFont
        }
        _ => IconMode::Classic,
    }
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn nerd_font_var_truthy_values_select_nerd_font() {
        for value in ["1", "true", "TRUE", "yes", "Yes"] {
            assert_eq!(
                icon_mode_from_nerd_font_var(Some(value)),
                IconMode::NerdFont,
                "{value}"
            );
        }
    }

    #[test]
    fn nerd_font_var_absent_or_falsey_selects_classic() {
        assert_eq!(icon_mode_from_nerd_font_var(None), IconMode::Classic);
        for value in ["0", "false", "", "maybe"] {
            assert_eq!(
                icon_mode_from_nerd_font_var(Some(value)),
                IconMode::Classic,
                "{value}"
            );
        }
    }
}