Add get_recurrence_rule method to EventObject

This commit is contained in:
Lennart
2025-05-02 18:05:00 +02:00
parent e611e67692
commit 97a5bd581f

View File

@@ -1,9 +1,12 @@
use super::{parse_duration, CalDateTime}; use super::{
CalDateTime, parse_duration,
rrule::{ParserError, RecurrenceRule},
};
use crate::Error; use crate::Error;
use chrono::Duration; use chrono::Duration;
use ical::{ use ical::{
generator::IcalEvent, generator::IcalEvent,
parser::{ical::component::IcalTimeZone, Component}, parser::{Component, ical::component::IcalTimeZone},
property::Property, property::Property,
}; };
use std::collections::HashMap; use std::collections::HashMap;
@@ -46,4 +49,23 @@ impl EventObject {
let first_occurence = self.get_first_occurence()?; let first_occurence = self.get_first_occurence()?;
Ok(first_occurence.map(|first_occurence| first_occurence + duration)) Ok(first_occurence.map(|first_occurence| first_occurence + duration))
} }
pub fn recurrence_rule(&self) -> Result<Option<RecurrenceRule>, ParserError> {
let rrule = if let Some(&Property {
value: Some(rrule), ..
}) = self.event.get_property("RRULE").as_ref()
{
rrule
} else {
return Ok(None);
};
RecurrenceRule::parse(rrule).map(Some)
}
pub fn expand_recurrence(&self) -> Result<(), Error> {
let rrule = self.event.get_property("RRULE").unwrap();
dbg!(rrule);
Ok(())
}
} }