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