[−][src]Crate cansi
cansi
Catergorise ANSI - ANSI escape code parser and categoriser
See the rs docs. Look at progress and contribute on github.
cansi
will parse text with ANSI escape sequences in it and return a deconstructed text with metadata around the colouring and styling. cansi
is only concerned with CSI
sequences, particuarly the SGR
parameters. cansi
will not construct escaped text, there are crates such as colored
that do a great job of colouring and styling text.
Example usage
This example was done using the
colored
crate to help with constructing the escaped text string. It will work with other tools that inject escape sequences into text strings (given they follow ANSI specification).
extern crate cansi; extern crate colored; use cansi::*; use colored::Colorize; use std::io::Write; let v = &mut Vec::new(); write!( v, "Hello, {}{}{}{}{}{}", "w".white().on_red(), "o".cyan().on_green(), "r".magenta().on_yellow(), "l".blue().on_white(), "d".yellow().on_bright_cyan(), "!".bright_red().on_bright_yellow(), ) .unwrap(); let text = String::from_utf8_lossy(&v); let result = categorise_text(&text); // cansi function assert_eq!(result.len(), 7); // there should be seven differently styled components assert_eq!("Hello, world!", &construct_text_no_codes(&result)); // 'Hello, ' is just defaults assert_eq!( result[0], CategorisedSlice { text: "Hello, ", fg_colour: Color::White, bg_colour: Color::Black, intensity: Intensity::Normal, italic: false, underline: false, blink: false, reversed: false, hidden: false, strikethrough: false } ); // 'w' is coloured differently assert_eq!( result[1], CategorisedSlice { text: "w", fg_colour: Color::White, bg_colour: Color::Red, intensity: Intensity::Normal, italic: false, underline: false, blink: false, reversed: false, hidden: false, strikethrough: false } );
Structs
CategorisedLineIterator | An iterator structure for |
CategorisedSlice | Data structure that holds information about colouring and styling of a text slice. |
Match | A match. |
Enums
Color | The 8 standard colors. |
Intensity | The emphasis (bold, faint) states. |
Functions
categorise_text | Parses the text and returns each formatted slice in order. The ANSI escape codes are not included in the text slices. |
construct_text_no_codes | Constructs a string of the categorised text without the ANSI escape characters. |
line_iter | Construct an iterator over each new line ( |
parse | Parses ANSI escape codes from the given text, returning a vector of |
Type Definitions
CategorisedLine | The item type of |
CategorisedSlices | Type definition of the collection of |