From 88e14917882b0c3f79e942b61027882fe9a7fe87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Sun, 24 May 2020 22:31:08 +0200 Subject: Handle events with no DTEND. --- module/vcomponent/datetime.scm | 86 ++++++++++++++++++++++++++---------------- 1 file changed, 53 insertions(+), 33 deletions(-) (limited to 'module/vcomponent/datetime.scm') diff --git a/module/vcomponent/datetime.scm b/module/vcomponent/datetime.scm index 28d48361..057b9ca1 100644 --- a/module/vcomponent/datetime.scm +++ b/module/vcomponent/datetime.scm @@ -29,14 +29,20 @@ "Returns if the event overlaps the timespan. Event must have the DTSTART and DTEND attribute set." (timespan-overlaps? (attr event 'DTSTART) - (attr event 'DTEND) + (or (attr event 'DTEND) (attr event 'DTSTART)) begin end)) (define (overlapping? event-a event-b) (timespan-overlaps? (attr event-a 'DTSTART) - (attr event-a 'DTEND) + (or (attr event-a 'DTEND) + (if (date? (attr event-a 'DTSTART)) + (date+ (attr event-a 'DTSTART) (date day: 1)) + (attr event-a 'DTSTART))) (attr event-b 'DTSTART) - (attr event-b 'DTEND))) + (or (attr event-b 'DTEND) + (if (date? (attr event-b 'DTSTART)) + (date+ (attr event-b 'DTSTART) (date day: 1)) + (attr event-b 'DTSTART))))) (define (event-contains? ev date/-time) "Does event overlap the date that contains time." @@ -44,6 +50,10 @@ Event must have the DTSTART and DTEND attribute set." (end (add-day start))) (event-overlaps? ev start end))) +(define-public (event-zero-length? ev) + (and (datetime? (attr ev 'DTSTART)) + (not (attr ev 'DTEND)))) + (define-public (ev-time