1//! # ANSI Escape Sequences provider & parser
2//!
3//! ## Sequences provider
4//!
5//! The `anes` crate provides ANSI escape sequences you can use to control the terminal
6//! cursor (show, hide, ...), colors (foreground, background), display attributes (bold, ...)
7//! and many others.
8//!
9//! Every sequence implements the standard library [`Display`](https://doc.rust-lang.org/std/fmt/trait.Display.html)
10//! trait. It means that these sequences can be used in macros like
11//! [`format!`](https://doc.rust-lang.org/std/macro.format.html) or
12//! [`write!`](https://doc.rust-lang.org/std/macro.write.html).
13//!
14//! Ask if you need more sequences or use the [`sequence!`](macro.sequence.html) macro to create
15//! your own sequences.
16//!
17//!
18//! ### Terminal Support
19//!
20//! Not all ANSI escape sequences are supported by all terminals. You can use the
21//! [interactive-test](https://github.com/zrzka/anes-rs/tree/master/interactive-test) to test them.
22//!
23//! ### Examples
24//!
25//! Retrieve the sequence as a `String`:
26//!
27//! ```rust
28//! use anes::SaveCursorPosition;
29//!
30//! let string = format!("{}", SaveCursorPosition);
31//! assert_eq!(&string, "\x1B7");
32//! ```
33//!
34//! Execute the sequence on the standard output:
35//!
36//! ```rust
37//! use std::io::{Result, Write};
38//!
39//! use anes::execute;
40//!
41//! fn main() -> Result<()> {
42//! let mut stdout = std::io::stdout();
43//! execute!(&mut stdout, anes::ResetAttributes)
44//! }
45//! ```
46//!
47//! ## Sequences parser
48//!
49//! Parser isn't available with default features. You have to enable `parser` feature if you'd like to use it.
50//! You can learn more about this feature in the [`parser`](parser/index.html) module documentation.
51#![warn(rust_2018_idioms)]
52#![deny(unused_imports, unused_must_use)]
53
54// Keep it first to load all the macros before other modules.
55#[macro_use]
56mod macros;
57
58pub use self::sequences::{
59 attribute::{Attribute, ResetAttributes, SetAttribute},
60 buffer::{
61 ClearBuffer, ClearLine, ScrollBufferDown, ScrollBufferUp, SwitchBufferToAlternate,
62 SwitchBufferToNormal,
63 },
64 color::{Color, SetBackgroundColor, SetForegroundColor},
65 cursor::{
66 DisableCursorBlinking, EnableCursorBlinking, HideCursor, MoveCursorDown, MoveCursorLeft,
67 MoveCursorRight, MoveCursorTo, MoveCursorToColumn, MoveCursorToNextLine,
68 MoveCursorToPreviousLine, MoveCursorUp, ReportCursorPosition, RestoreCursorPosition,
69 SaveCursorPosition, ShowCursor,
70 },
71 terminal::{DisableMouseEvents, EnableMouseEvents, ResizeTextArea},
72};
73
74#[cfg(feature = "parser")]
75pub mod parser;
76mod sequences;
77