aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2020-04-27 03:02:00 +0200
committerHugo Hörnquist <hugo@lysator.liu.se>2020-04-27 03:02:00 +0200
commit4a63bd27c432e5c9f04309219bad3ef83814c45a (patch)
tree61a9d664960b832790f66d23a9632f76577b1b0f
parentTODO additions. (diff)
downloadcalp-4a63bd27c432e5c9f04309219bad3ef83814c45a.tar.gz
calp-4a63bd27c432e5c9f04309219bad3ef83814c45a.tar.xz
Add final-event-occurence procedure.
-rw-r--r--module/datetime/zic.scm2
-rw-r--r--module/vcomponent/recurrence/generate-alt.scm13
2 files changed, 14 insertions, 1 deletions
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) ; <timespec>
(rule zone-entry-rule) ; #f | symbol | <timespec>
(format zone-entry-format) ; string
- (until zone-entry-until)) ; <datetime>
+ (until zone-entry-until)) ; <datetime> | #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)