diff options
Diffstat (limited to 'bin/domain/imag-calendar/src/util.rs')
-rw-r--r-- | bin/domain/imag-calendar/src/util.rs | 44 |
1 files changed, 21 insertions, 23 deletions
diff --git a/bin/domain/imag-calendar/src/util.rs b/bin/domain/imag-calendar/src/util.rs index a3f17350..f6a45460 100644 --- a/bin/domain/imag-calendar/src/util.rs +++ b/bin/domain/imag-calendar/src/util.rs @@ -132,14 +132,11 @@ pub fn kairos_parse(spec: &str) -> Result<NaiveDateTime> { ::kairos::parser::Parsed::TimeType(tt) => { trace!("before-filter spec resulted in timetype"); - let tt = tt.calculate() + tt.calculate() .map_err_trace_exit_unwrap() .get_moment() - .ok_or_else(|| format_err!("Not a moment in time: {}", spec))? - .clone(); - - trace!("Before filter spec {} => {}", spec, tt); - Ok(tt) + .cloned() + .ok_or_else(|| format_err!("Not a moment in time: {}", spec)) } } } @@ -160,25 +157,26 @@ pub fn find_event_by_id<'a>(store: &'a Store, id: &str, refconfig: &Config) -> R trace!("Checking whether {} is represented by {}", id, event.get_location()); let parsed = ParsedEventFLE::parse(event, refconfig)?; - if parsed + let found = parsed .get_data() .events() - .filter_map(|event| if event - .as_ref() - .map(|e| { - trace!("Checking whether {:?} starts with {}", e.uid(), id); - e.uid().map(|uid| uid.raw().starts_with(id)).unwrap_or(false) - }) - .unwrap_or(false) - { - trace!("Seems to be relevant"); - Some(event) - } else { - None - }) - .next() - .is_some() - { + .any(|event| { + let take = event + .as_ref() + .map(|e| { + trace!("Checking whether {:?} starts with {}", e.uid(), id); + e.uid().map(|uid| uid.raw().starts_with(id)).unwrap_or(false) + }) + .unwrap_or(false); + + if take { + trace!("Seems to be relevant"); + } + + take + }); + + if found { return Ok(Some(parsed)) } } |