From 4a63bd27c432e5c9f04309219bad3ef83814c45a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Mon, 27 Apr 2020 03:02:00 +0200 Subject: Add final-event-occurence procedure. --- module/datetime/zic.scm | 2 +- module/vcomponent/recurrence/generate-alt.scm | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/module/datetime/zic.scm b/module/datetime/zic.scm index e9be7701..52457ada 100644 --- a/module/datetime/zic.scm +++ b/module/datetime/zic.scm @@ -102,7 +102,7 @@ (stdoff zone-entry-stdoff) ; (rule zone-entry-rule) ; #f | symbol | (format zone-entry-format) ; string - (until zone-entry-until)) ; + (until zone-entry-until)) ; | #f (export zone-entry? zone-entry-stdoff zone-entry-rule zone-entry-format zone-entry-until) diff --git a/module/vcomponent/recurrence/generate-alt.scm b/module/vcomponent/recurrence/generate-alt.scm index 7337ddaa..d48e471d 100644 --- a/module/vcomponent/recurrence/generate-alt.scm +++ b/module/vcomponent/recurrence/generate-alt.scm @@ -292,6 +292,19 @@ date-stream))] [else date-stream]))) + +(define-public (final-event-occurence event) + (define rrule (parse-recurrence-rule + (attr event 'RRULE) + (if (date? (attr event 'DTSTART)) + parse-ics-date parse-ics-datetime))) + + (if (or (count rrule) (until rrule)) + (let ((instances (rrule-instances event))) + (stream-ref instances (1- (stream-length instances)))) + #f)) + + (define (generate-recurrence-set base-event) -- cgit v1.2.3