summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNora <nora.widdecke@tu-bs.de>2019-03-26 18:03:44 +0100
committerNora <nora.widdecke@tu-bs.de>2019-03-26 18:03:44 +0100
commitf870a92d3e45fb5f5aedeb1446c6f610c23b938f (patch)
treea93d31695b6a5964d0086d8ecdaa360ef439171a
parent95618126c94779f5a740d4dbec61bcdbc1fbc1f9 (diff)
fix get_end according to ical spec
-rw-r--r--src/khevent.rs23
1 files changed, 15 insertions, 8 deletions
diff --git a/src/khevent.rs b/src/khevent.rs
index 304e6e4..e4ea55e 100644
--- a/src/khevent.rs
+++ b/src/khevent.rs
@@ -26,15 +26,22 @@ impl KhEvent {
pub fn get_end(&self) -> Option<IcalTime> {
//TODO: should probably depend on is_recur_master, not the instance timestamp
- let dtend = match self.instance_timestamp {
- Some(ref timestamp) => {
- let dur = self.get_duration().unwrap();
- let dtend = timestamp.to_owned() + dur;
- Some(dtend)
+ if self.is_recur_instance() {
+ let dur = self.get_duration().unwrap();
+ let dtend = self.instance_timestamp.clone().unwrap() + dur;
+ Some(dtend)
+ } else {
+ match self.event.get_dtend() {
+ Some(dtend) => Some(dtend),
+ None => {
+ if self.get_start().unwrap().is_date() {
+ self.get_start().map(|start| start.succ())
+ } else {
+ self.get_start()
+ }
+ }
}
- None => self.event.get_dtend(),
- };
- dtend.or(self.get_start().map(|start| start.succ()))
+ }
}
pub fn with_internal_timestamp(&self, timestamp: &IcalTime) -> Self {