130 lines
3.1 KiB
Markdown
130 lines
3.1 KiB
Markdown
|
|
[![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
|
||
|
|
|
||
|
|
<details>
|
||
|
|
<summary>
|
||
|
|
Click to show Cargo.toml.
|
||
|
|
</summary>
|
||
|
|
|
||
|
|
```toml
|
||
|
|
[dependencies]
|
||
|
|
anes = "0.1"
|
||
|
|
```
|
||
|
|
|
||
|
|
</details>
|
||
|
|
<p></p>
|
||
|
|
|
||
|
|
|
||
|
|
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
|
||
|
|
|
||
|
|
<details>
|
||
|
|
<summary>
|
||
|
|
Click to show Cargo.toml.
|
||
|
|
</summary>
|
||
|
|
|
||
|
|
```toml
|
||
|
|
[dependencies]
|
||
|
|
anes = { version = "0.1", features = ["parser"] }
|
||
|
|
```
|
||
|
|
|
||
|
|
</details>
|
||
|
|
<p></p>
|
||
|
|
|
||
|
|
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
|