42 lines
1.4 KiB
Markdown
42 lines
1.4 KiB
Markdown
[](https://gitlab.com/davidbittner/ansi-parser/commits/master)   
|
|
# Ansi Escape Sequence 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
|
|
turns all of the ANSI sequences into enums and splits the string at every location that there
|
|
was an ANSI Sequence.
|
|
|
|
Example:
|
|
|
|
```rust
|
|
|
|
use ansi_parser::{Output, ParserIterator};
|
|
|
|
fn main() {
|
|
//Your input string here
|
|
let string = "...";
|
|
let parsed: Vec<Output> = ParserIterator::new(&string)
|
|
//Because it implements Iterator, you can use whatever
|
|
//your favorite iterator functions are.
|
|
.take(4)
|
|
.collect();
|
|
|
|
for block in parsed.into_iter() {
|
|
match block {
|
|
TextBlock(text) => println!("{}", text),
|
|
AnsiSequence(seq) => println!("{}", seq)
|
|
}
|
|
}
|
|
}
|
|
```
|