diff options
author | Nora <nora.widdecke@tu-bs.de> | 2019-03-26 18:03:44 +0100 |
---|---|---|
committer | Nora <nora.widdecke@tu-bs.de> | 2019-03-26 18:03:44 +0100 |
commit | f870a92d3e45fb5f5aedeb1446c6f610c23b938f (patch) | |
tree | a93d31695b6a5964d0086d8ecdaa360ef439171a | |
parent | 95618126c94779f5a740d4dbec61bcdbc1fbc1f9 (diff) |
fix get_end according to ical spec
-rw-r--r-- | src/khevent.rs | 23 |
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 { |