1use crate::utils::writer::Writer;
2use crate::{args::Clean, utils::cli_result::CliResult};
3use regex::bytes::Regex;
4use std::io::{stdin, BufRead, BufReader};
5
6impl Clean {
7 pub fn io_run(&self) -> CliResult {
8 let mut rdr = BufReader::new(stdin().lock());
9
10 let mut wtr = Writer::stdout()?;
12
13 let re = Regex::new(&self.escape)?;
15 let empty_bytes = b"";
16
17 let mut buf = vec![];
18 while let Ok(bytes_read) = rdr.read_until(b'\n', &mut buf) {
19 if bytes_read == 0 {
20 break;
21 }
22
23 let str = re.replace_all(&buf[..bytes_read], empty_bytes);
24 wtr.write_bytes(&str)?;
25 buf.clear();
26 }
27
28 Ok(())
29 }
30}