aboutsummaryrefslogtreecommitdiffstats
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/main.rs b/src/main.rs
index a7747c7..0c1a240 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -16,6 +16,7 @@
use ical;
use chrono::{DateTime, TimeZone, Utc};
+use regex::Regex;
use std::fs::File;
use std::io::BufReader;
@@ -70,8 +71,10 @@ fn match_event(event: &ical::parser::ical::component::IcalEvent, pattern: &str)
let parts: Vec<&str> = pattern.split(':').collect();
let (key, pat) = (parts[0].to_uppercase(), parts[1]);
+ let re = Regex::new(&pat).unwrap();
+
event.properties.iter()
- .filter(|ref p| p.name == key && p.value.clone().unwrap().matches(&pat).count() > 0)
+ .filter(|ref p| p.name == key && re.is_match(&p.value.clone().unwrap()))
.count() > 0
}
}
@@ -103,6 +106,12 @@ fn match_events_by_summary() {
assert_eq!(2, events.len());
}
+#[test]
+fn match_events_by_regex() {
+ let events:Vec<_> = test_match_event_helper("summary:^All.+1$");
+ assert_eq!(1, events.len());
+}
+
fn main() {
let mut args = std::env::args().skip(1);
let filename = args.next().unwrap();