From a05a7c24d802b6025c60125794fd3a1b4e787319 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Pant=C5=AF=C4=8Dek?= Date: Sat, 11 Mar 2023 08:21:50 +0100 Subject: [PATCH] Month formatting. --- brmsaptool.scm | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/brmsaptool.scm b/brmsaptool.scm index 9b88a29..06f8bfb 100644 --- a/brmsaptool.scm +++ b/brmsaptool.scm @@ -115,8 +115,19 @@ (define (string->month s) (list 2023 1)) -(define (month->string m) - "2023-01") +;; Formats (valid) month as YYYY-MM string +(define (month->string M) + (let ((y (car s)) + (m (cadr s))) + (if (or (< y 1000) + (> y 9999) + (< m 1) + (> m 12)) + (error 'string->month "Invalid month" M) + (sprintf "~A-~A~A" + y + (if (< m 10) " " "") + m)))) (define (month=? m n) #f) @@ -125,13 +136,15 @@ #f) (define (month-diff m n) - ; Inclusive? + ; Exclusive 1) (define (month-tests!) (display "[test] month ") ;; Parsing - ;; Formatting + (unit-test 'month->string (equal? (month->string '(2023 1)) "2023-01")) + (unit-test 'month->string-bad-year (with-handler (lambda (x) #t) (month->string '(999 12)) #f)) + (unit-test 'month->string-bad-month (with-handler (lambda (x) #t) (month->string '(2023 13)) #f)) ;; Comparison less ;; Comparison equal ;; Comparison greater