From c08334f841165bcebc63edf42ccf0939b4c92bbf Mon Sep 17 00:00:00 2001 From: Matthias Beyer Date: Sun, 3 Jan 2021 10:09:58 +0100 Subject: Replace manual Regex parsing with serde_regex Signed-off-by: Matthias Beyer --- Cargo.lock | 11 +++++++++++ Cargo.toml | 1 + src/config.rs | 13 +++++-------- src/main.rs | 1 + 4 files changed, 18 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 727385c..8aff881 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -95,6 +95,7 @@ dependencies = [ "serde", "serde_derive", "serde_json", + "serde_regex", "simplelog", "toml 0.5.8", ] @@ -1060,6 +1061,16 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_regex" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8136f1a4ea815d7eac4101cfd0b16dc0cb5e1fe1b8609dfd728058656b7badf" +dependencies = [ + "regex", + "serde", +] + [[package]] name = "sha2" version = "0.8.2" diff --git a/Cargo.toml b/Cargo.toml index 8e1693b..5ab08f3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,6 +17,7 @@ serde_json = "1" simplelog = "^0.4.3" toml = "^0.5" getset = "0.1" +serde_regex = "1" [dependencies.chrono] features = [ "serde" ] diff --git a/src/config.rs b/src/config.rs index c2aa960..465d802 100644 --- a/src/config.rs +++ b/src/config.rs @@ -17,7 +17,9 @@ use getset::Getters; #[derive(Clone, Debug, Deserialize)] pub struct LogItemDeser { file : String, - regex : String, + + #[serde(with="serde_regex")] + regex : Regex, alias : String, } @@ -79,14 +81,9 @@ impl LogItem { /// Transforms a LogItemDeser into a more immediately usable LogItem fn from_log_item_deser(lid : LogItemDeser) -> Result { - - debug!("trying to parse regex `{}`", lid.regex); - let l_regex = Regex::new(lid.regex.as_str()) - .chain_err(|| format!("regex not parseable: '{}'", lid.regex))?; - // first capture is the whole match and nameless // second capture is always the timestamp - let cnames : Vec = l_regex + let cnames : Vec = lid.regex .capture_names() .skip(2) .filter_map(|n| n) @@ -109,7 +106,7 @@ impl LogItem { Ok( LogItem { file : lid.file, - regex : l_regex, + regex : lid.regex, alias: lid.alias, capture_names : cnames, aliases : als diff --git a/src/main.rs b/src/main.rs index 3eb81f9..3f2b1f8 100644 --- a/src/main.rs +++ b/src/main.rs @@ -17,6 +17,7 @@ extern crate serde; #[macro_use] extern crate serde_derive; extern crate serde_json; +extern crate serde_regex; extern crate simplelog; extern crate getset; -- cgit v1.2.3