Show missing keys.

This commit is contained in:
Dominik Pantůček 2023-03-27 07:46:04 +02:00
parent babe6ffce4
commit f06949b545
2 changed files with 16 additions and 1 deletions

View file

@ -116,7 +116,14 @@
(else
(list k v)))))
sikeys))
(result (filter identity (append head body))))
(misskeys (member-missing-keys mr))
(miss (if (null? misskeys)
'()
(list (list "Missing keys:"
(string-intersperse
(map symbol->string misskeys)
", ")))))
(result (filter identity (append head body miss))))
(print (table->string result #:table-border #t #:row-border #t #:col-border #t))))
;; Nicely prints the member source with any errors recorded.

View file

@ -42,6 +42,7 @@
member-record-sub-ensure
member-record-info
member-missing-keys
member-destroyed?
member-suspended?
@ -186,6 +187,13 @@
(dict-ref info key)
(dict-ref info key (car defaults)))))
;; Return mandatory keys with #f as value
(define (member-missing-keys mr)
(dict-reduce '()
(lambda (acc k v)
(if v acc (cons k acc)))
(dict-ref mr 'info)))
;; Returns true if the member record represents destroyed member. The
;; *current-month* is a global parameter from period module.
(define (member-destroyed? mr)