rsv_lib/io/
clean.rs

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        // open files
11        let mut wtr = Writer::stdout()?;
12
13        // copy
14        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}