From cadb5782f066fe2b9ef795ac61e1fd8feec7e635 Mon Sep 17 00:00:00 2001 From: Ian Roddis Date: Wed, 8 Dec 2021 10:54:01 -0400 Subject: [PATCH] checkpoint --- src/calendar.rs | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/calendar.rs b/src/calendar.rs index 7caa49f..5effc2b 100644 --- a/src/calendar.rs +++ b/src/calendar.rs @@ -64,11 +64,17 @@ pub enum DateSpec { impl DateSpec { /// Get exact date of event and its policy, if it occured in that year - fn resolve(&self, year: i32) -> Option<(NaiveDate, AdjustmentPolicy)> { + fn resolve(&self, start: NaiveDate, end: NaiveDate) -> Option<(Vec, AdjustmentPolicy)> { use DateSpec::*; match self { - SpecificDate { date, .. } => Some((*date, AdjustmentPolicy::NoAdjustment)), + SpecificDate { date, .. } => { + if date < start || end < date { + None + } else { + Some((vec![*date], AdjustmentPolicy::NoAdjustment)), + } + } DayOfMonth { month, day, @@ -77,9 +83,14 @@ impl DateSpec { observed, .. } => { - if valid_since.is_some() && valid_since.unwrap().year() > year { + if valid_since > end || valid_until < start { None - } else if valid_until.is_some() && valid_until.unwrap().year() < year { + } else { + start = + + if valid_since.is_some() && valid_since.unwrap().year() > start { + None + } else if valid_until.is_some() && valid_until.unwrap().year() < end { None } else { let date = NaiveDate::from_ymd(year, month.number_from_month(), *day);