aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2020-04-17 22:07:48 +0200
committerHugo Hörnquist <hugo@lysator.liu.se>2020-04-17 22:07:48 +0200
commit59728f72bd905ddc0e7ddc3e4fb1cb5fa1d48a2c (patch)
treeffd4ec21b9378381ec0e7d489f0f9dbc237f1437
parentRRULE parser now converts weekdays to (datetime util) weekdays. (diff)
downloadcalp-59728f72bd905ddc0e7ddc3e4fb1cb5fa1d48a2c.tar.gz
calp-59728f72bd905ddc0e7ddc3e4fb1cb5fa1d48a2c.tar.xz
Improve some errors.
-rw-r--r--module/datetime/util.scm3
-rw-r--r--module/vcomponent/recurrence/parse.scm9
2 files changed, 10 insertions, 2 deletions
diff --git a/module/datetime/util.scm b/module/datetime/util.scm
index 17d4f4da..da204f22 100644
--- a/module/datetime/util.scm
+++ b/module/datetime/util.scm
@@ -139,7 +139,8 @@
;; NOTE this allows days larger than 7 (sunday if counting from monday).
(let ((str (catch 'out-of-range
(lambda () (locale-day (1+ (modulo week-day-number 7))))
- (lambda (oor str num) (scm-error 'out-of-range 'week-day-name "~a == (~a % 7) + 1"
+ (lambda (oor str num) (scm-error 'out-of-range 'week-day-name
+ "~a == (~a % 7) + 1"
(list num week-day-number) (list week-day-number))))))
;; I also know about the @var{locale-day-short} method, but I need
;; strings of length 2.
diff --git a/module/vcomponent/recurrence/parse.scm b/module/vcomponent/recurrence/parse.scm
index 66605c11..a2221660 100644
--- a/module/vcomponent/recurrence/parse.scm
+++ b/module/vcomponent/recurrence/parse.scm
@@ -52,7 +52,9 @@
,@(map (match-lambda
((key guard '=> body ...)
`((,key) (if (not ,guard)
- (begin ,@else-clause)
+ (begin (warning (quote ,key)
+ (quote ,guard))
+ ,@else-clause)
(begin ,@body))))
((key body ...)
`((,key) (begin ,@body)))
@@ -60,6 +62,11 @@
`(else ,@body)))
cases))))
+(define (warning key guard )
+ (display (format #f "Warning RRULE guard failed for key ~a~% guard: ~a~%"
+ key guard)
+ (current-error-port)))
+
;; RFC 5545, Section 3.3.10. Recurrence Rule, states that the UNTIL value MUST have
;; the same type as the DTSTART of the event (date or datetime). I have seen events
;; in the wild which didn't follow this. I consider that an user error.