From 914a57692f0f89456ca1929ee71909fb869d8554 Mon Sep 17 00:00:00 2001 From: Trey Blancher Date: Fri, 11 Nov 2022 12:38:54 -0500 Subject: [PATCH] Refactored doprocess --- rust/timetracking/Cargo.lock | 2 +- rust/timetracking/Cargo.toml | 2 +- rust/timetracking/{do_process => doprocess}/Cargo.toml | 2 +- rust/timetracking/{do_process => doprocess}/src/main.rs | 9 ++++++++- 4 files changed, 11 insertions(+), 4 deletions(-) rename rust/timetracking/{do_process => doprocess}/Cargo.toml (92%) rename rust/timetracking/{do_process => doprocess}/src/main.rs (83%) diff --git a/rust/timetracking/Cargo.lock b/rust/timetracking/Cargo.lock index 5fd4f56..7f30759 100644 --- a/rust/timetracking/Cargo.lock +++ b/rust/timetracking/Cargo.lock @@ -130,7 +130,7 @@ dependencies = [ ] [[package]] -name = "do_process" +name = "doprocess" version = "0.1.0" dependencies = [ "itertools", diff --git a/rust/timetracking/Cargo.toml b/rust/timetracking/Cargo.toml index 5aaa60e..4ed9839 100644 --- a/rust/timetracking/Cargo.toml +++ b/rust/timetracking/Cargo.toml @@ -2,7 +2,7 @@ members = [ "timetracker", - "do_process", + "doprocess", "chug", "timelogging" ] diff --git a/rust/timetracking/do_process/Cargo.toml b/rust/timetracking/doprocess/Cargo.toml similarity index 92% rename from rust/timetracking/do_process/Cargo.toml rename to rust/timetracking/doprocess/Cargo.toml index 94d38df..e4614fe 100644 --- a/rust/timetracking/do_process/Cargo.toml +++ b/rust/timetracking/doprocess/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "do_process" +name = "doprocess" version = "0.1.0" edition = "2021" diff --git a/rust/timetracking/do_process/src/main.rs b/rust/timetracking/doprocess/src/main.rs similarity index 83% rename from rust/timetracking/do_process/src/main.rs rename to rust/timetracking/doprocess/src/main.rs index 4e77e4e..150c8bc 100644 --- a/rust/timetracking/do_process/src/main.rs +++ b/rust/timetracking/doprocess/src/main.rs @@ -6,6 +6,9 @@ use itertools::Itertools; use timelogging::timetracking::{nearest, process_input_file, generate_individual_timecards}; fn main() { + // set up a regex for escaping regex characters + let cat_esc = Regex::new(r"(?P[-*^$+?])").unwrap(); + // Process the file (stdin or file argument) let input = env::args().nth(1); let mut reader: Box = match input { @@ -24,7 +27,10 @@ fn main() { let mut running_total: f64 = 0.0; for cat in categories { let mut subtotal: f64 = 0.0; - let catre = Regex::new(&format!(r"\[{}\]\s+.*\s*$", cat).to_string()).unwrap(); + let catre = Regex::new(&format!(r"\[{}\]\s+.*\s*$", + cat_esc.replace_all(&cat, r"\$char".to_string())) + .to_string()) + .unwrap(); for (act, duration) in ind.iter().sorted_by_key(|x| x.0) { if ! catre.is_match(&act.to_string()) { continue @@ -49,3 +55,4 @@ fn main() { println!("{}", format!("Grand total: {:.2}", gtoth)); } +