aboutsummaryrefslogtreecommitdiff
path: root/module/vcomponent/recurrence/parse.scm
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@hornquist.se>2020-02-14 11:03:09 +0100
committerHugo Hörnquist <hugo@hornquist.se>2020-02-14 11:03:09 +0100
commitd656f86875caec9cda6142b61a6d9575d2e700fa (patch)
tree2b5060f574b8f6cb0c0c883e64cf23cf8dad10d9 /module/vcomponent/recurrence/parse.scm
parentAdd date-difference. (diff)
downloadcalp-d656f86875caec9cda6142b61a6d9575d2e700fa.tar.gz
calp-d656f86875caec9cda6142b61a6d9575d2e700fa.tar.xz
Repair recurrence rules.
Diffstat (limited to 'module/vcomponent/recurrence/parse.scm')
-rw-r--r--module/vcomponent/recurrence/parse.scm3
1 files changed, 3 insertions, 0 deletions
diff --git a/module/vcomponent/recurrence/parse.scm b/module/vcomponent/recurrence/parse.scm
index 1c974727..a4724918 100644
--- a/module/vcomponent/recurrence/parse.scm
+++ b/module/vcomponent/recurrence/parse.scm
@@ -71,17 +71,20 @@
(FREQ (memv symb intervals) => (set! (freq o) symb))
(WKST (memv symb weekdays) => (set! (wkst o) symb))
+ ;; Always positive
(BYSECOND (every (lambda (n) (<= 0 n 60)) nums) => (set! (bysecond o) nums))
(BYMINUTE (every (lambda (n) (<= 0 n 59)) nums) => (set! (byminute o) nums))
(BYHOUR (every (lambda (n) (<= 0 n 23)) nums) => (set! (byhour o) nums))
(BYMONTH (every (lambda (n) (<= 1 n 12)) nums) => (set! (byweekno o) nums))
+ ;; May be negative
(BYDAY (every (lambda (p) (memv (cdr p) weekdays)) days) => (set! (byday o) days))
(BYMONTHDAY (every (lambda (n) (and (!= n 0) (<= -31 n 31))) nums) => (set! (bymonthday o) nums))
(BYYEARDAY (every (lambda (n) (and (!= n 0) (<= -366 n 366))) nums) => (set! (byyearday o) nums))
(BYSETPOS (every (lambda (n) (and (!= n 0) (<= -366 n 366))) nums) => (set! (bysetpos o) nums))
(BYWEEKNO (every (lambda (n) (and (!= n 0) (<= -53 n 53))) nums) => (set! (byweekno o) nums))
+
(else o)))))
;; obj