1
1
mirror of https://github.com/wez/wezterm.git synced 2024-12-01 09:13:10 +03:00
wezterm/termwiz/examples/strip-ansi-escapes.rs

31 lines
891 B
Rust

//! This is a little utility that strips escape sequences from
//! stdin and prints the result on stdout.
//! It preserves only printable characters and CR, LF and HT.
use std::io::{Read, Result};
use termwiz::escape::parser::Parser;
use termwiz::escape::{Action, ControlCode};
fn main() -> Result<()> {
let mut buf = [0u8; 4096];
let mut parser = Parser::new();
loop {
let len = std::io::stdin().read(&mut buf)?;
if len == 0 {
return Ok(());
}
parser.parse(&buf[0..len], |action| match action {
Action::Print(c) => print!("{}", c),
Action::Control(c) => match c {
ControlCode::HorizontalTab
| ControlCode::LineFeed
| ControlCode::CarriageReturn => print!("{}", c as u8 as char),
_ => {}
},
_ => {}
});
}
}