[![Stable Status][actions-stable-badge]][actions-link] [![Beta Status][actions-beta-badge]][actions-link] [![Nightly Status][actions-nightly-badge]][actions-link] [![crates.io][crates-badge]][crates-link] [![docs.rs][docs-badge]][docs-link] [![MIT][mit-license-badge]][mit-license-link] [![Apache 2.0][apache-license-badge]][apache-license-link] ![LOC][loc-badge] # ANSI Escape Sequences provider & parser A Rust library which provides an ANSI escape sequences (or codes, whatever you like more) and a parser allowing you to parse data from the STDIN (or `/dev/tty`) in the raw mode. ## Sequences provider ### Terminal support Not all ANSI escape sequences are supported by all terminals. You can use the [interactive-test](https://github.com/zrzka/anes-rs/tree/master/interactive-test) to test them. Checkout the repository and then: ```bash $ cd anes-rs $ cargo run --bin interactive-test ``` ### Examples
Click to show Cargo.toml. ```toml [dependencies] anes = "0.1" ```

An example how to retrieve the ANSI escape sequence as a `String`: ```rust use anes::SaveCursorPosition; fn main() { let string = format!("{}", SaveCursorPosition); assert_eq!(&string, "\x1B7"); } ``` An example how to use the ANSI escape sequence: ```rust use std::io::{Result, Write}; use anes::execute; fn main() -> Result<()> { let mut stdout = std::io::stdout(); execute!( &mut stdout, anes::SaveCursorPosition, anes::MoveCursorTo(10, 10), anes::RestoreCursorPosition )?; Ok(()) } ``` ## Sequences parser You have to enable `parser` feature in order to use the parser. It's disabled by default. ### Examples
Click to show Cargo.toml. ```toml [dependencies] anes = { version = "0.1", features = ["parser"] } ```

An example how to parse cursor position: ```rust use anes::parser::{Parser, Sequence}; let mut parser = Parser::default(); parser.advance(b"\x1B[20;10R", false); assert_eq!(Some(Sequence::CursorPosition(10, 20)), parser.next()); assert!(parser.next().is_none()); ``` ## License The ANES crate is dual-licensed under [Apache 2.0][apache-license-link] and [MIT][mit-license-link] terms. Copyrights in the ANES project are retained by their contributors. No copyright assignment is required to contribute to the ANES project. [actions-stable-badge]: https://github.com/zrzka/anes-rs/workflows/stable/badge.svg [actions-beta-badge]: https://github.com/zrzka/anes-rs/workflows/beta/badge.svg [actions-nightly-badge]: https://github.com/zrzka/anes-rs/workflows/nightly/badge.svg [actions-link]: https://github.com/zrzka/anes-rs/actions [crates-badge]: https://img.shields.io/crates/v/anes.svg [crates-link]: https://crates.io/crates/anes [docs-badge]: https://docs.rs/anes/badge.svg [docs-link]: https://docs.rs/anes [mit-license-badge]: https://img.shields.io/badge/license-MIT-blue.svg [mit-license-link]: ./LICENSE-MIT [apache-license-badge]: https://img.shields.io/badge/license-Apache2-blue.svg [apache-license-link]: /LICENSE-APACHE [loc-badge]: https://tokei.rs/b1/github/zrzka/anes-rs?category=code