From 8a1dbbb0b3158cdd8870e8abbbf485b8bf84c505 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Thu, 14 May 2020 17:44:39 +0200 Subject: Remove recurrence instances before our start date. --- module/vcomponent/recurrence/generate-alt.scm | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'module/vcomponent/recurrence/generate-alt.scm') diff --git a/module/vcomponent/recurrence/generate-alt.scm b/module/vcomponent/recurrence/generate-alt.scm index a98d10db..77304b55 100644 --- a/module/vcomponent/recurrence/generate-alt.scm +++ b/module/vcomponent/recurrence/generate-alt.scm @@ -71,7 +71,6 @@ -;; TODO compliacted fields ;; rrule → (list extension-rule) (define (all-extenders rrule) (make-extenders @@ -345,7 +344,12 @@ (aif (attr* event 'EXDATE) (cut member <> (map value it)) (const #f)) - (generate-posibilities rrule (attr event 'DTSTART)) + ;; Some expanders can produce dates before our start time. + ;; For example FREQ=WEEKLY;BYDAY=MO where DTSTART is + ;; anything after monday. This filters these out. + (stream-drop-while + (lambda (d) (date/-time< d (attr event 'DTSTART))) + (generate-posibilities rrule (attr event 'DTSTART))) ;; TODO ideally I should merge the limited recurrence set ;; with the list of rdates here. However, I have never ;; sen an event with an RDATE attribute, so I wont worry -- cgit v1.2.3