From d9354f040c8deffc673d58f9d1a7d10148954809 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Thu, 23 Jun 2022 23:57:17 +0200 Subject: Fix datetime issues discovered due to new tests. --- module/datetime.scm | 347 ++++++++++++++++++++++--------------------- module/datetime/timespec.scm | 2 +- 2 files changed, 181 insertions(+), 168 deletions(-) diff --git a/module/datetime.scm b/module/datetime.scm index 9118d42f..1a84d421 100644 --- a/module/datetime.scm +++ b/module/datetime.scm @@ -11,11 +11,12 @@ :use-module ((hnh util) :select (vector-last set! -> ->> swap case* set - span-upto set->)) + label span-upto set->)) :use-module (ice-9 i18n) :use-module (ice-9 format) :use-module (ice-9 regex) + :use-module (ice-9 match) :use-module (calp util config) :export (date @@ -52,7 +53,6 @@ start-of-month end-of-month start-of-year - end-of-year date-stream day-stream @@ -181,13 +181,7 @@ (make-date year month day)) (set-record-type-printer! - - (lambda (r p) - (catch 'misc-error - (lambda () (display (date->string r "#~Y-~m-~d") p)) - (lambda (err proc fmt args data) - (format p "#< BAD year=~s month=~s day=~s>" - (year r) (month r) (day r)))))) + (lambda (r p) (display (date->string r "#~1") p))) ;;; TIME @@ -198,16 +192,16 @@ (hour hour) (minute minute) (second second)) (define* (time key: (hour 0) (minute 0) (second 0)) + (unless (and (integer? hour) (integer? minute) (integer? second)) + (scm-error 'wrong-type-arg "time" + "Hour, minute, and second must all be integers. ~s, ~s, ~s" + (list hour minute second) + #f)) (make-time hour minute second)) (set-record-type-printer!