diff options
Diffstat (limited to '')
-rw-r--r-- | module/vcomponent/parse/component.scm | 35 | ||||
-rw-r--r-- | module/vcomponent/recurrence/display/test.scm | 2 | ||||
-rw-r--r-- | module/vcomponent/recurrence/generate-alt.scm | 5 |
3 files changed, 23 insertions, 19 deletions
diff --git a/module/vcomponent/parse/component.scm b/module/vcomponent/parse/component.scm index bb397f21..f8677a19 100644 --- a/module/vcomponent/parse/component.scm +++ b/module/vcomponent/parse/component.scm @@ -111,18 +111,29 @@ ;; TODO This is an ugly hack until the rest of the code is updated ;; to work on events without an explicit DTEND attribute. - (when (and (eq? (type (car stack)) 'VEVENT) - (not (attr (car stack) 'DTEND))) - (set! (attr (car stack) 'DTEND) - (let ((start (attr (car stack) 'DTSTART))) - ;; p. 54, 3.6.1 - ;; If DTSTART is a date then it's an all - ;; day event. If DTSTART instead is a - ;; datetime then the event has a length - ;; of 0? - (if (date? start) - (date+ start (date day: 1)) - (datetime+ start (datetime time: (time hour: 1))))))) + (when (eq? (type (car stack)) 'VEVENT) + (when (not (attr (car stack) 'DTEND)) + (set! (attr (car stack) 'DTEND) + (let ((start (attr (car stack) 'DTSTART))) + ;; p. 54, 3.6.1 + ;; If DTSTART is a date then it's an all + ;; day event. If DTSTART instead is a + ;; datetime then the event has a length + ;; of 0? + (if (date? start) + (date+ start (date day: 1)) + (datetime+ start (datetime time: (time hour: 1))))))) + + ;; This isn't part of the field values since we "need" + ;; the type of DTSTART for UNTIL to work. + ;; This could however be side steped by auto detecting + ;; @type{date}s vs @type{datetime}s in @function{parse-recurrence-rule}. + (when (attr (car stack) 'RRULE) + (set! (attr (car stack) 'RRULE) + ((@ (vcomponent recurrence) parse-recurrence-rule) + (attr (car stack) 'RRULE) + (if (date? (attr (car stack) 'DTSTART)) + parse-ics-date parse-ics-datetime))))) (loop (cdr lst) (if (null? (cdr stack)) diff --git a/module/vcomponent/recurrence/display/test.scm b/module/vcomponent/recurrence/display/test.scm index bcfbaafe..6c566499 100644 --- a/module/vcomponent/recurrence/display/test.scm +++ b/module/vcomponent/recurrence/display/test.scm @@ -25,8 +25,6 @@ (attr comp 'RRULE)) (map (lambda (d) (datetime->string d "~a ~1 ~3")) (stream->list - ;; TODO this assumes a future version of rrule-instances - ;; which assumes a pre parsed recurrence rule. 10 ((@@ (vcomponent recurrence generate-alt) rrule-instances) comp))))))) diff --git a/module/vcomponent/recurrence/generate-alt.scm b/module/vcomponent/recurrence/generate-alt.scm index 77304b55..1d32d793 100644 --- a/module/vcomponent/recurrence/generate-alt.scm +++ b/module/vcomponent/recurrence/generate-alt.scm @@ -332,11 +332,6 @@ rrule base-date))) (define-stream (rrule-instances event) - ;; (define rrule (parse-recurrence-rule - ;; (attr event 'RRULE) - ;; (if (date? (attr event 'DTSTART)) - ;; parse-ics-date parse-ics-datetime))) - (define rrule (attr event 'RRULE)) ;; 3.8.5.1 exdate are evaluated AFTER rrule (and rdate) |