summaryrefslogtreecommitdiffstats
path: root/src/main.rs
diff options
context:
space:
mode:
authorRyan Geary <rtgnj42@gmail.com>2019-10-09 18:23:02 -0400
committerRyan Geary <rtgnj42@gmail.com>2019-10-09 18:23:02 -0400
commitf722cbcbbb61ba46c5d6e63d543a834c65a51751 (patch)
tree86e0fb28d058cd36f9f8d960ac6ee810eae9b7bc /src/main.rs
parent09ddbb4f659076e08b2e85fb65fea97623178eb7 (diff)
Remove repeated Regex compilation
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/main.rs b/src/main.rs
index b3bdc29..d6c7c50 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,5 +1,7 @@
+use regex::Regex;
use std::fs::File;
use std::io::{self, BufRead, BufReader, Read, Write};
+use std::process;
use structopt::StructOpt;
mod choice;
@@ -18,12 +20,22 @@ fn main() {
let lock = stdout.lock();
let mut handle = io::BufWriter::new(lock);
+ let re = Regex::new(match &opt.field_separator {
+ Some(s) => s,
+ None => "[[:space:]]",
+ })
+ .unwrap_or_else(|e| {
+ eprintln!("Failed to compile regular expression: {}", e);
+ // Exit code of 1 means failed to compile field_separator regex
+ process::exit(1);
+ });
+
let lines = buf.lines();
for line in lines {
match line {
Ok(l) => {
for choice in &opt.choice {
- choice.print_choice(&l, &opt, &mut handle);
+ choice.print_choice(&l, &opt, &re, &mut handle);
}
writeln!(handle, "");
}