summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2021-01-03 10:09:58 +0100
committerMatthias Beyer <mail@beyermatthias.de>2021-01-03 10:37:32 +0100
commit47b184651c226a8ee3679cfac3936f62640c8c99 (patch)
tree1209eeb4d991587c26fa87a4afab9057472d43db
parent5903b5ecabe896b995a7ef217c0f2c304af889ae (diff)
Replace manual Regex parsing with serde_regex
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
-rw-r--r--Cargo.lock11
-rw-r--r--Cargo.toml1
-rw-r--r--src/config.rs13
-rw-r--r--src/main.rs1
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",
]
@@ -1061,6 +1062,16 @@ dependencies = [
]
[[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"
source = "registry+https://github.com/rust-lang/crates.io-index"
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<LogItem> {
-
- 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<String> = l_regex
+ let cnames : Vec<String> = 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;