Skip to content

This is a simple CSI parser that only provides parsing for a subset of common CSI.

Notifications You must be signed in to change notification settings

YageGeng/csi_parser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

This is a simple CSI parser that only provides parsing for a subset of common CSI.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages