updating readme example

This commit is contained in:
David Bittner
2019-05-06 17:20:10 -04:00
parent 2b8ef9dcd5
commit a281428c66
2 changed files with 34 additions and 27 deletions

2
Cargo.lock generated
View File

@@ -2,7 +2,7 @@
# It is not intended for manual editing. # It is not intended for manual editing.
[[package]] [[package]]
name = "ansi-parser" name = "ansi-parser"
version = "0.6.0" version = "0.6.1"
dependencies = [ dependencies = [
"nom 4.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "nom 4.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
] ]

View File

@@ -1,16 +1,12 @@
![pipeline status](https://img.shields.io/gitlab/pipeline/gitlab-org/gitlab-ce.svg?style=flat-square) ![deps](https://img.shields.io/librariesio/release/cargo/ansi-parser.svg?style=flat-square) ![license](https://img.shields.io/crates/l/ansi-parser.svg?style=flat-square) ![downloads](https://img.shields.io/crates/d/ansi-parser.svg?style=flat-square) ![pipeline status](https://img.shields.io/gitlab/pipeline/gitlab-org/gitlab-ce.svg)
[![docs](https://docs.rs/ansi-parser/badge.svg?version=0.6.1)](https://docs.rs/ansi-parser/)
![deps](https://img.shields.io/librariesio/release/cargo/ansi-parser.svg)
![license](https://img.shields.io/crates/l/ansi-parser.svg)
![downloads](https://img.shields.io/crates/d/ansi-parser.svg?style=flat-square)]
# Ansi Escape Sequence Parser # Ansi Escape Sequence Parser
For a complete list of implemented sequences, see the [documentation](https://docs.rs/ansi-parser).
This is a library for parsing ANSI escape sequences. Currently all the basic escape sequences
are implemented:
+ Cursor Position
+ Cursor {Up, Down, Forward, Backward}
+ Cursor {Save, Restore}
+ Erase Display
+ Erase Line
+ Set Graphics mode
+ Set and Reset Text Mode
This is done through a pulldown type parser, where an iterator is exposed. This essentially This is done through a pulldown type parser, where an iterator is exposed. This essentially
turns all of the ANSI sequences into enums and splits the string at every location that there turns all of the ANSI sequences into enums and splits the string at every location that there
@@ -19,22 +15,33 @@ are implemented:
Example: Example:
```rust ```rust
use ansi_parser::{Output, AnsiParser};
use ansi_parser::{Output, ParserIterator}; use ansi_parser::AnsiSequence;
fn main() { fn main() {
//Your input string here //Parse the first two blocks in the list
let string = "..."; //By parsing it this way, it allows you to iterate over the
let parsed: Vec<Output> = ParserIterator::new(&string) //elements returned.
//Because it implements Iterator, you can use whatever //
//your favorite iterator functions are. //The parser only every holds a reference to the data,
.take(4) //so there is no allocation.
let parsed: Vec<Output> = "This is \u{1b}[3Asome text!"
.ansi_parse()
.take(2)
.collect(); .collect();
assert_eq!(
vec![
Output::TextBlock("This is "),
Output::Escape(AnsiSequence::CursorUp(3))
],
parsed
);
for block in parsed.into_iter() { for block in parsed.into_iter() {
match block { match block {
TextBlock(text) => println!("{}", text), Output::TextBlock(text) => println!("{}", text),
AnsiSequence(seq) => println!("{}", seq) Output::Escape(seq) => println!("{}", seq)
} }
} }
} }