1 unstable release

0.1.3 Jun 24, 2023
0.1.2 Jun 5, 2023
0.1.1 May 28, 2023
0.1.0 May 27, 2023

#1059 in Command-line interface

MIT license

25KB
581 lines

CSI parser

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.

Example

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

Features

To support the no_std feature, you simply need to run cargo add --no-default-features -F no_std to your project.

No runtime deps

Features