diff --git a/src/events/ics.rs b/src/events/ics.rs index b567c3b..bd291ad 100644 --- a/src/events/ics.rs +++ b/src/events/ics.rs @@ -3,9 +3,10 @@ // SPDX-License-Identifier: MIT use crate::events::{Event, EventDateTime, Events}; -use crate::utils::DateRange; +use chrono::Duration; use icalendar::{Calendar, CalendarDateTime, Component, DatePerhapsTime, Event as IcalendarEvent}; use rrule::RRuleSet; +use std::cmp::max; use std::path::{Path, PathBuf}; impl From for EventDateTime { @@ -47,7 +48,8 @@ impl TryFrom<&IcalendarEvent> for Event { }; let mut rrulesets: Vec = vec![]; if !rrulestring.is_empty() { - for date in DateRange(start.date(), end.date()) { + let mut date = start.date(); + while date < max(start.date() + Duration::days(1), end.date()) { let rrule = format!( "DTSTART;VALUE=DATE:{}\n{rrulestring}", date.format("%Y%m%d") @@ -55,6 +57,7 @@ impl TryFrom<&IcalendarEvent> for Event { if let Ok(x) = rrule.parse() { rrulesets.push(x); } + date += Duration::days(1); } } Ok(Event { diff --git a/src/utils/date_extensions.rs b/src/utils/date_extensions.rs index 3d51f1a..edb2a31 100644 --- a/src/utils/date_extensions.rs +++ b/src/utils/date_extensions.rs @@ -122,21 +122,6 @@ impl Iterator for MonthFullWeeksIter { } } -pub struct DateRange(pub NaiveDate, pub NaiveDate); - -impl Iterator for DateRange { - type Item = NaiveDate; - - fn next(&mut self) -> Option { - if self.0 < self.1 { - self.0 += Duration::days(1); - Some(self.0) - } else { - None - } - } -} - #[cfg(test)] mod tests { use super::*; diff --git a/src/utils/mod.rs b/src/utils/mod.rs index bc163ff..d299d94 100644 --- a/src/utils/mod.rs +++ b/src/utils/mod.rs @@ -5,5 +5,5 @@ mod date_extensions; mod helpers; -pub use date_extensions::{DateExtensions, DateRange, MonthFullWeeksIter}; +pub use date_extensions::{DateExtensions, MonthFullWeeksIter}; pub use helpers::convertstyle;