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]
56 mod macros;
57 
58 pub 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")]
75 pub mod parser;
76 mod sequences;
77