small fixes

This commit is contained in:
Lennart K
2026-01-07 11:58:02 +01:00
parent 5e5017a185
commit 8e583e24cb
8 changed files with 24 additions and 47 deletions

2
Cargo.lock generated
View File

@@ -1771,7 +1771,7 @@ dependencies = [
[[package]] [[package]]
name = "ical" name = "ical"
version = "0.11.0" version = "0.11.0"
source = "git+https://github.com/lennart-k/ical-rs?branch=dev#169df28e8065f26d61f33367279e2516dc882c89" source = "git+https://github.com/lennart-k/ical-rs?branch=dev#5525818e2fca0fc99cbe0b0c0fb260d0d790f43f"
dependencies = [ dependencies = [
"chrono", "chrono",
"chrono-tz", "chrono-tz",

View File

@@ -139,7 +139,10 @@ END:VCALENDAR";
prop_filter: vec![], prop_filter: vec![],
comp_filter: vec![], comp_filter: vec![],
}; };
assert!(!object.matches(&comp_filter), "filter: wants no VCALENDAR"); assert!(
!object.get_inner().matches(&comp_filter),
"filter: wants no VCALENDAR"
);
let comp_filter = CompFilterElement { let comp_filter = CompFilterElement {
is_not_defined: None, is_not_defined: None,
@@ -154,7 +157,10 @@ END:VCALENDAR";
comp_filter: vec![], comp_filter: vec![],
}], }],
}; };
assert!(!object.matches(&comp_filter), "filter matches VTODO"); assert!(
!object.get_inner().matches(&comp_filter),
"filter matches VTODO"
);
let comp_filter = CompFilterElement { let comp_filter = CompFilterElement {
is_not_defined: None, is_not_defined: None,
@@ -169,7 +175,10 @@ END:VCALENDAR";
comp_filter: vec![], comp_filter: vec![],
}], }],
}; };
assert!(object.matches(&comp_filter), "filter matches VEVENT"); assert!(
object.get_inner().matches(&comp_filter),
"filter matches VEVENT"
);
let comp_filter = CompFilterElement { let comp_filter = CompFilterElement {
is_not_defined: None, is_not_defined: None,
@@ -216,7 +225,7 @@ END:VCALENDAR";
}], }],
}; };
assert!( assert!(
object.matches(&comp_filter), object.get_inner().matches(&comp_filter),
"Some prop filters on VCALENDAR and VEVENT" "Some prop filters on VCALENDAR and VEVENT"
); );
} }
@@ -245,7 +254,7 @@ END:VCALENDAR";
}], }],
}; };
assert!( assert!(
object.matches(&comp_filter), object.get_inner().matches(&comp_filter),
"event should lie in time range" "event should lie in time range"
); );
@@ -270,7 +279,7 @@ END:VCALENDAR";
}], }],
}; };
assert!( assert!(
!object.matches(&comp_filter), !object.get_inner().matches(&comp_filter),
"event should not lie in time range" "event should not lie in time range"
); );
} }
@@ -304,7 +313,7 @@ END:VCALENDAR";
}], }],
}; };
assert!( assert!(
object.matches(&comp_filter), object.get_inner().matches(&comp_filter),
"Timezone should be Europe/Berlin" "Timezone should be Europe/Berlin"
); );
} }

View File

@@ -79,5 +79,5 @@ const FILTER_2: &str = r#"
fn yeet(#[case] ics: &str, #[case] filter: &str, #[case] matches: bool) { fn yeet(#[case] ics: &str, #[case] filter: &str, #[case] matches: bool) {
let obj = CalendarObject::from_ics(ics.to_owned(), None).unwrap(); let obj = CalendarObject::from_ics(ics.to_owned(), None).unwrap();
let filter = FilterElement::parse_str(filter).unwrap(); let filter = FilterElement::parse_str(filter).unwrap();
assert_eq!(matches, filter.matches(&obj)); assert_eq!(matches, filter.matches(obj.get_inner()));
} }

View File

@@ -54,10 +54,11 @@ impl Resource for CalendarObjectResource {
} }
CalendarObjectPropName::CalendarData(CalendarData { expand, .. }) => { CalendarObjectPropName::CalendarData(CalendarData { expand, .. }) => {
CalendarObjectProp::CalendarData(if let Some(expand) = expand.as_ref() { CalendarObjectProp::CalendarData(if let Some(expand) = expand.as_ref() {
self.object.expand_recurrence( todo!()
Some(expand.start.to_utc()), // self.object.get_inner().expand_recurrence(
Some(expand.end.to_utc()), // Some(expand.start.to_utc()),
)? // Some(expand.end.to_utc()),
// )
} else { } else {
self.object.get_ics().to_owned() self.object.get_ics().to_owned()
}) })

View File

@@ -4,7 +4,6 @@ use ical::parser::{
Component, Component,
vcard::{self, component::VcardContact}, vcard::{self, component::VcardContact},
}; };
use ical::types::CalDateTime;
use sha2::{Digest, Sha256}; use sha2::{Digest, Sha256};
use std::{collections::HashMap, io::BufReader}; use std::{collections::HashMap, io::BufReader};
@@ -62,20 +61,6 @@ impl AddressObject {
&self.vcf &self.vcf
} }
#[must_use]
pub fn get_anniversary(&self) -> Option<(CalDateTime, bool)> {
// let prop = self.vcard.get_property("ANNIVERSARY")?.value.as_deref()?;
// CalDateTime::parse_vcard(prop).ok()
todo!()
}
#[must_use]
pub fn get_birthday(&self) -> Option<(CalDateTime, bool)> {
todo!()
// let prop = self.vcard.get_property("BDAY")?.value.as_deref()?;
// CalDateTime::parse_vcard(prop).ok()
}
#[must_use] #[must_use]
pub fn get_full_name(&self) -> Option<&str> { pub fn get_full_name(&self) -> Option<&str> {
let prop = self.vcard.get_property("FN")?; let prop = self.vcard.get_property("FN")?;

View File

@@ -1,6 +1,4 @@
use crate::Error; use crate::Error;
use chrono::DateTime;
use chrono::Utc;
use derive_more::Display; use derive_more::Display;
use ical::component::CalendarInnerData; use ical::component::CalendarInnerData;
use ical::component::IcalCalendarObject; use ical::component::IcalCalendarObject;
@@ -115,22 +113,8 @@ impl CalendarObject {
&self.ics &self.ics
} }
#[must_use]
pub fn get_component_name(&self) -> &str {
self.get_object_type().as_str()
}
#[must_use] #[must_use]
pub fn get_object_type(&self) -> CalendarObjectType { pub fn get_object_type(&self) -> CalendarObjectType {
(&self.inner).into() (&self.inner).into()
} }
pub fn expand_recurrence(
&self,
start: Option<DateTime<Utc>>,
end: Option<DateTime<Utc>>,
) -> Result<String, Error> {
// Ok(self.inner.expand_recurrence(start, end)?)
todo!()
}
} }

View File

@@ -2,9 +2,7 @@ use chrono::{DateTime, NaiveDateTime, Utc};
use derive_more::derive::Deref; use derive_more::derive::Deref;
use rustical_xml::{ValueDeserialize, ValueSerialize}; use rustical_xml::{ValueDeserialize, ValueSerialize};
const LOCAL_DATE_TIME: &str = "%Y%m%dT%H%M%S";
const UTC_DATE_TIME: &str = "%Y%m%dT%H%M%SZ"; const UTC_DATE_TIME: &str = "%Y%m%dT%H%M%SZ";
pub const LOCAL_DATE: &str = "%Y%m%d";
#[derive(Debug, thiserror::Error, PartialEq, Eq)] #[derive(Debug, thiserror::Error, PartialEq, Eq)]
pub enum CalDateTimeError { pub enum CalDateTimeError {

View File

@@ -26,5 +26,5 @@ END:VCALENDAR
#[test] #[test]
fn parse_calendar_object() { fn parse_calendar_object() {
let object = CalendarObject::from_ics(MULTI_VEVENT.to_string(), None).unwrap(); let object = CalendarObject::from_ics(MULTI_VEVENT.to_string(), None).unwrap();
object.expand_recurrence(None, None).unwrap(); object.get_inner().expand_recurrence(None, None);
} }