aboutsummaryrefslogtreecommitdiff
path: root/vcalendar/recur.scm
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2019-03-08 13:14:34 +0100
committerHugo Hörnquist <hugo@lysator.liu.se>2019-03-08 13:14:34 +0100
commite7c471cb50bf92debc6e28ef5e45d0c5e4b3da3c (patch)
treec6f59fc9464d5c9ea704c1c05a6b6f57be13bd2f /vcalendar/recur.scm
parentGot DAILY repeating event! (diff)
downloadcalp-e7c471cb50bf92debc6e28ef5e45d0c5e4b3da3c.tar.gz
calp-e7c471cb50bf92debc6e28ef5e45d0c5e4b3da3c.tar.xz
Made DTSTART have <time> instead of <date> type.
Diffstat (limited to '')
-rw-r--r--vcalendar/recur.scm17
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))