aboutsummaryrefslogtreecommitdiff
path: root/module/output/ical.scm
diff options
context:
space:
mode:
Diffstat (limited to 'module/output/ical.scm')
-rw-r--r--module/output/ical.scm18
1 files changed, 12 insertions, 6 deletions
diff --git a/module/output/ical.scm b/module/output/ical.scm
index 146afc8c..d2f5800c 100644
--- a/module/output/ical.scm
+++ b/module/output/ical.scm
@@ -98,7 +98,8 @@ CALSCALE:GREGORIAN\r
(define (print-footer)
(format #t "END:VCALENDAR\r\n"))
-(define-public (ical-main calendars events start end)
+;; list x list x list x time x time →
+(define-public (ical-main calendars regular-events repeating-events start end)
(print-header)
(let ((tzs (make-hash-table)))
@@ -109,11 +110,16 @@ CALSCALE:GREGORIAN\r
(hash-for-each (lambda (key component) (component->ical-string component))
tzs))
- ;; TODO this contains repeated events multiple times
- (stream-for-each
+ ;; TODO add support for running without a range limiter, emiting all objects.
+ (for-each
component->ical-string
- (filter-sorted-stream (lambda (ev) ((in-date-range? start end)
- (time-utc->date (attr ev 'DTSTART))))
- events))
+ (filter-sorted (lambda (ev) ((in-date-range? start end)
+ (time-utc->date (attr ev 'DTSTART))))
+ regular-events))
+
+ ;; TODO RECCURENCE-ID exceptions
+ ;; We just dump all repeating objects, since it's much cheaper to do it this way than
+ ;; to actually figure out which are applicable for the given date range.
+ (for-each component->ical-string repeating-events)
(print-footer))