Default #f for all mandatory keys.

This commit is contained in:
Dominik Pantůček 2023-03-26 21:24:28 +02:00
parent faa3a930be
commit 34ce407268
2 changed files with 31 additions and 6 deletions

View file

@ -39,6 +39,7 @@
member-record-sub-set
member-record-sub-prepend
member-record-sub-has-key?
member-record-sub-ensure
member-record-info
@ -162,6 +163,22 @@
(define (member-record-sub-has-key? mr sec key)
(dict-has-key? (dict-ref mr sec) key))
;; Returns new member record with section updated by defaults, the
;; section must already exist.
(define (member-record-sub-ensure mr sec . kvs)
(let loop ((kvs kvs)
(sd (dict-ref mr sec)))
(if (null? kvs)
(dict-set mr sec sd)
(if (null? (cdr kvs))
(error 'member-record-sub-ensure "Needs pairs of keys and values" kvs)
(let ((key (car kvs))
(val (cadr kvs)))
(loop (cddr kvs)
(if (dict-has-key? sd key)
sd
(dict-set sd key val))))))))
;; Returns member info key value
(define (member-record-info mr key . defaults)
(let ((info (dict-ref mr 'info)))
@ -245,9 +262,9 @@
((#\S) (number->string (member-suspended-months mr)))
((#\E)
(let ((n (length (dict-ref mr 'highlights '()))))
(if (<= n 2)
(if (eq? n 0)
""
(sprintf "[~A]" (- n 2)))))
(sprintf "[~A]" n))))
((#\~) "~"))
resl))
(loop (cdr fmtl)