diff options
Diffstat (limited to 'vcalendar/recur.scm')
-rw-r--r-- | vcalendar/recur.scm | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/vcalendar/recur.scm b/vcalendar/recur.scm index a480d946..23c00b12 100644 --- a/vcalendar/recur.scm +++ b/vcalendar/recur.scm @@ -126,9 +126,17 @@ (match rule (($ <recur-rule> freq until count interval bysecond byminute byhour wkst) (case freq - ((WEEKLY) (transform-attr! new-event "DTSTART" (cut date-add <> 1 weeks)) + ((WEEKLY) + (transform-attr! new-event "DTSTART" (cut time-add <> 1 weeks)) + (set! (attr new-event "DTEND") + (add-duration (attr new-event "DTSTART") + (attr new-event "DURATION"))) (values new-event rule)) - ((DAILY) (transform-attr! new-event "DTSTART" (cut date-add <> 1 days)) + ((DAILY) + (transform-attr! new-event "DTSTART" (cut time-add <> 1 days)) + (set! (attr new-event "DTEND") + (add-duration (attr new-event "DTSTART") + (attr new-event "DURATION"))) (values new-event rule)) (else (values '() rule)))) (_ (values event rule))))) @@ -142,6 +150,11 @@ (recur-event-stream next-event next-rule))))) (define (recur-event event) + (unless (attr event "DURATION") + (set! (attr event "DURATION") + (time-difference + (attr event "DTEND") + (attr event "DTSTART")))) (recur-event-stream event (build-recur-rules (get-attr event "RRULE")))) (define tzero (make-time time-utc 0 0)) |