Skip to content

Latest commit

 

History

History

antsi

antsi

antsi is a no-std mini-crate that provides support for SGR1 codes (better known as ANSI escape sequences)

The name is a play on words and encapsulates the three goals of the crate:

  • ant: small, productive and extremely useful (🐜)
  • ansi: implementation of ANSI escape sequences
  • antsy: restless as in fast, with near to no overhead (🏎️💨)

The crate tries to be as correct as possible, acting both as a library and as an up-to-date reference guide regarding terminal support and related specifications (correct as of the time of publication).

Example

use antsi::{BasicColor, Style, Font, FontWeight};

// effortless const support
const PANIC_STYLE: Style = Style::new().with_foreground(BasicColor::Red.bright().into());
const BOLD_STYLE: Style = Style::new().with_font(Font::new().with_weight(FontWeight::Bold));

fn knows_user() -> bool {
    true
}

fn main() {
    // dynamic style support
    let mut style = Style::new();
    if knows_user() {
        style = style.font_mut().set_strikethrough();
    }
    eprintln!("O no! {}", PANIC_STYLE.apply(format_args!("mainframe breach {} has been {}", style.apply("(from an unknown user)"), BOLD_STYLE.apply("detected"))))
}
O no! mainframe breach (from an unknown user) has been detected

Contributors

antsi was created by Bilal Mahmoud for use in error-stack. It is being developed in conjunction with HASH as an open-source project. We gratefully accept external contributions and have published a contributing guide that outlines the process. If you have questions, please create a discussion. You can also report bugs directly on the GitHub repo.

License

antsi is available under a number of different open-source licenses. Please see the LICENSE file to review your options.

Footnotes

  1. SGR stands for Select Graphic Rendition