itrace 0.1.1

Structured, columnar tracing for Rust applications
Documentation
// Copyright (c) 2026 Claudio Carraro <wiclac@pm.me>
// SPDX-License-Identifier: BSD-3-Clause

use crate::config::Color;

pub const RESET: &str = "\x1b[0m";

pub fn ansi_bg(code: u8) -> String {
    format!("\x1b[48;5;{code}m")
}

pub fn ansi_fg(code: u8) -> String {
    format!("\x1b[38;5;{code}m")
}

pub fn rgb_bg(r: u8, g: u8, b: u8) -> String {
    format!("\x1b[48;2;{r};{g};{b}m")
}

pub fn rgb_fg(r: u8, g: u8, b: u8) -> String {
    format!("\x1b[38;2;{r};{g};{b}m")
}

pub fn color_bg(color: &Color) -> String {
    match color {
        Color::Ansi { ansi } => ansi_bg(*ansi),
        Color::Rgb { rgb } => rgb_bg(rgb[0], rgb[1], rgb[2]),
    }
}

pub fn color_fg(color: &Color) -> String {
    match color {
        Color::Ansi { ansi } => ansi_fg(*ansi),
        Color::Rgb { rgb } => rgb_fg(rgb[0], rgb[1], rgb[2]),
    }
}