diff --git a/Cargo.lock b/Cargo.lock index 4b586d4..d558dd9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,67 +1,100 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. +version = 3 + +[[package]] +name = "aho-corasick" +version = "0.7.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" +dependencies = [ + "memchr", +] + [[package]] name = "base64" version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" dependencies = [ - "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder", ] [[package]] name = "byteorder" version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5" [[package]] name = "cfg-if" version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" [[package]] name = "charset" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f426e64df1c3de26cbf44593c6ffff5dbfd43bbf9de0d075058558126b3fc73" dependencies = [ - "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "encoding_rs 0.8.20 (registry+https://github.com/rust-lang/crates.io-index)", + "base64", + "encoding_rs", ] [[package]] name = "email" version = "0.1.0" dependencies = [ - "mailparse 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", + "mailparse", + "regex", ] [[package]] name = "encoding_rs" version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87240518927716f79692c2ed85bfe6e98196d18c6401ec75355760233a7e12e9" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if", ] [[package]] name = "mailparse" version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51a60bad00d8aa905d31cf239f207ad4ef16c963ea53cf522d5fd7dc7f3ecfe2" dependencies = [ - "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "charset 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "quoted_printable 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "base64", + "charset", + "quoted_printable", ] +[[package]] +name = "memchr" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" + [[package]] name = "quoted_printable" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86cedf331228892e747bb85beb130b6bb23fc628c40dde9ea01eb6becea3c798" -[metadata] -"checksum base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" -"checksum byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5" -"checksum cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" -"checksum charset 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4f426e64df1c3de26cbf44593c6ffff5dbfd43bbf9de0d075058558126b3fc73" -"checksum encoding_rs 0.8.20 (registry+https://github.com/rust-lang/crates.io-index)" = "87240518927716f79692c2ed85bfe6e98196d18c6401ec75355760233a7e12e9" -"checksum mailparse 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)" = "51a60bad00d8aa905d31cf239f207ad4ef16c963ea53cf522d5fd7dc7f3ecfe2" -"checksum quoted_printable 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "86cedf331228892e747bb85beb130b6bb23fc628c40dde9ea01eb6becea3c798" +[[package]] +name = "regex" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e076559ef8e241f2ae3479e36f97bd5741c0330689e217ad51ce2c76808b868a" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.6.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" diff --git a/Cargo.toml b/Cargo.toml index 9087fa5..e7fa65e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,3 +8,4 @@ edition = "2018" [dependencies] mailparse = "0.9.2" +regex = "1.7.0" diff --git a/src/main.rs b/src/bin/mailparse.rs similarity index 100% rename from src/main.rs rename to src/bin/mailparse.rs diff --git a/src/bin/printable.rs b/src/bin/printable.rs new file mode 100644 index 0000000..996ae03 --- /dev/null +++ b/src/bin/printable.rs @@ -0,0 +1,27 @@ +use std::{io, io::Read}; + +use regex::Regex; + +fn main() -> io::Result<()> { + let re = Regex::new("[^[[:print:]]\n]").expect("invalid regex"); + let mut buffer = String::new(); + io::stdin().read_to_string(&mut buffer)?; + let buffer = re.replace_all(&buffer, ""); + + let mut last_c = 0; + for l in buffer.lines() { + let c = l + .as_bytes() + .iter() + .filter(|b| match b { + b' ' | b'\t' => false, + _ => true, + }) + .count(); + if !(c == 0 && last_c == 0) { + println!("{l}"); + } + last_c = c; + } + Ok(()) +}