18 个版本
0.9.1 | 2024年5月19日 |
---|---|
0.8.0 | 2021年4月25日 |
0.7.0 | 2020年10月5日 |
0.6.5 | 2019年5月10日 |
#214 在 解析器实现 中
5,174 每月下载量
用于 19 个 crate (13 个直接使用)
26KB
588 代码行
Ansii 转义序列解析器
有关实现序列的完整列表,请参阅 文档。
这是通过下拉类型解析器完成的,其中公开了迭代器。这本质上将所有 ANSI 序列转换为枚举,并在每个 ANSI 序列的位置分割字符串。
示例
use ansi_parser::{Output, AnsiParser};
use ansi_parser::AnsiSequence;
fn main() {
//Parse the first two blocks in the list
//By parsing it this way, it allows you to iterate over the
//elements returned.
//
//The parser only every holds a reference to the data,
//so there is no allocation.
let parsed: Vec<Output> = "This is \u{1b}[3Asome text!"
.ansi_parse()
.take(2)
.collect();
assert_eq!(
vec![
Output::TextBlock("This is "),
Output::Escape(AnsiSequence::CursorUp(3))
],
parsed
);
for block in parsed.into_iter() {
match block {
Output::TextBlock(text) => println!("{}", text),
Output::Escape(seq) => println!("{}", seq)
}
}
}
no_std
支持
no_std
通过在您的 Cargo.toml
中禁用 std
功能来支持。
依赖项
~1.5MB
~28K SLoC