aboutsummaryrefslogtreecommitdiff
path: root/module/vcomponent
diff options
context:
space:
mode:
Diffstat (limited to 'module/vcomponent')
-rw-r--r--module/vcomponent/control.scm1
-rw-r--r--module/vcomponent/datetime.scm7
-rw-r--r--module/vcomponent/recurrence/internal.scm4
-rw-r--r--module/vcomponent/recurrence/parse.scm2
-rw-r--r--module/vcomponent/xcal/parse.scm11
5 files changed, 22 insertions, 3 deletions
diff --git a/module/vcomponent/control.scm b/module/vcomponent/control.scm
index add48c28..5fe5b8b0 100644
--- a/module/vcomponent/control.scm
+++ b/module/vcomponent/control.scm
@@ -22,6 +22,7 @@
(set! (prop component key) val))))
keys)))
+;; TODO what is this even used for?
(define-syntax with-replaced-properties
(syntax-rules ()
[(_ (component (key val) ...)
diff --git a/module/vcomponent/datetime.scm b/module/vcomponent/datetime.scm
index 887ae48b..ca4f90e9 100644
--- a/module/vcomponent/datetime.scm
+++ b/module/vcomponent/datetime.scm
@@ -68,6 +68,13 @@ Event must have the DTSTART and DTEND protperty set."
date-difference datetime-difference)
(prop e 'DTEND) (prop e 'DTSTART))))
+;;
+;; |-----| extent of event
+;; |-----| time we are interested in,
+;; defined through @var{start-date} and @var{end-date}
+;; |X| part of event within that time (X)
+;;
+;; Returns the length of the interval (X).
(define-public (event-length/clamped start-date end-date e)
(let ((end (or (prop e 'DTEND)
(if (date? (prop e 'DTSTART))
diff --git a/module/vcomponent/recurrence/internal.scm b/module/vcomponent/recurrence/internal.scm
index 8e84a8b6..1b9dd405 100644
--- a/module/vcomponent/recurrence/internal.scm
+++ b/module/vcomponent/recurrence/internal.scm
@@ -51,6 +51,10 @@
freq until count interval bysecond byminute byhour
byday bymonthday byyearday byweekno bymonth bysetpos
wkst)
+ ;; TODO possibly validate fields here
+ ;; to prevent creation of invalid rules.
+ ;; This was made apparent when wkst was (incorrectly) set to MO,
+ ;; which later crashed generate-recurrence-set.
(make-recur-rule% freq until count interval bysecond byminute byhour
byday bymonthday byyearday byweekno bymonth bysetpos
wkst))
diff --git a/module/vcomponent/recurrence/parse.scm b/module/vcomponent/recurrence/parse.scm
index b48e88e5..ba2a5583 100644
--- a/module/vcomponent/recurrence/parse.scm
+++ b/module/vcomponent/recurrence/parse.scm
@@ -13,7 +13,7 @@
;; transform into weekday objects from
-(define (rfc->datetime-weekday symbol)
+(define-public (rfc->datetime-weekday symbol)
(case symbol
[(SU) sun]
[(MO) mon]
diff --git a/module/vcomponent/xcal/parse.scm b/module/vcomponent/xcal/parse.scm
index 6b877b9f..6ae8c2f9 100644
--- a/module/vcomponent/xcal/parse.scm
+++ b/module/vcomponent/xcal/parse.scm
@@ -50,8 +50,15 @@
[(recur)
(apply (@ (vcomponent recurrence internal) make-recur-rule)
- (for (k v) in value
- (list (symbol->keyword k) v)))]
+ (concatenate
+ (for (k v) in value
+ (list (symbol->keyword k)
+ (case k
+ ((wkst)
+ ((@ (vcomponent recurrence parse)
+ rfc->datetime-weekday)
+ (string->symbol v)))
+ (else v))))))]
[(time) (parse-iso-time (car value))]