Crates.io | csi_parser |
lib.rs | csi_parser |
version | 0.1.3 |
source | src |
created_at | 2023-05-27 11:48:05.945125 |
updated_at | 2023-06-24 07:44:46.857816 |
description | CSI escape code parser. |
homepage | https://github.com/GengYage/csi_parser |
repository | https://github.com/GengYage/csi_parser |
max_upload_size | |
id | 875910 |
size | 24,732 |
This is a simple CSI parser that only provides parsing for a subset of common CSI.
This repository was inspired by cansi
If you have additional requirements, feel free to submit a PR (Pull Request)
Please refer to the definition of CSI.
See the rs docs.
Look at progress and contribute on github.
use csi_parser::iter::{CsiParser, Output};
fn main() {
let text = "👋, \x1b[31;4m🌍\x1b[0m!";
let result: Vec<Output> = text.csi_parser().skip(1).collect();
for out in result {
match out {
Output::Text(txt) => {
println!("{}", txt);
}
Output::Escape(csi_seq) => {
println!("{}", csi_seq);
}
}
}
}
and you will be got the result:
[Some(31);None;Some(4)m
🌍
[Some(0);None;Nonem
To support the no_std
feature, you simply need to run cargo add --no-default-features -F no_std
to your project.