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

@ -99,14 +99,22 @@
(msg (cdr fr))) (msg (cdr fr)))
(cons amt msg))) (cons amt msg)))
value))) value)))
((nick)
(let ((mr0 (member-record-sub-set mr output key (car value))))
(if (irregex-search (irregex "[ \\t]" 'u) (car value))
(member-record-add-highlight
mr0 (cdr value) "Whitespace not allowed in nick" 3 'error)
mr0)))
(else (else
(member-record-sub-set mr output key (car value)))))))) (member-record-sub-set mr output key (car value))))))))
;; Final checks - add defaults ;; Pass 4: Final checks - add defaults
(define (member-schema-finalize mr) (define (member-schema-finalize mr)
(if (member-record-sub-has-key? mr 'info 'joined) (apply
mr member-record-sub-ensure
(member-record-sub-set mr 'info 'joined (*member-default-joined*)))) mr 'info
'joined (*member-default-joined*)
(join (map (lambda (mk) (list mk #f)) mandatory-keys))))
;; Pass 0: Removes any comments and removes any leading and trailing ;; Pass 0: Removes any comments and removes any leading and trailing
;; whitespace. ;; whitespace.

View file

@ -39,6 +39,7 @@
member-record-sub-set member-record-sub-set
member-record-sub-prepend member-record-sub-prepend
member-record-sub-has-key? member-record-sub-has-key?
member-record-sub-ensure
member-record-info member-record-info
@ -162,6 +163,22 @@
(define (member-record-sub-has-key? mr sec key) (define (member-record-sub-has-key? mr sec key)
(dict-has-key? (dict-ref 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 ;; Returns member info key value
(define (member-record-info mr key . defaults) (define (member-record-info mr key . defaults)
(let ((info (dict-ref mr 'info))) (let ((info (dict-ref mr 'info)))
@ -245,9 +262,9 @@
((#\S) (number->string (member-suspended-months mr))) ((#\S) (number->string (member-suspended-months mr)))
((#\E) ((#\E)
(let ((n (length (dict-ref mr 'highlights '())))) (let ((n (length (dict-ref mr 'highlights '()))))
(if (<= n 2) (if (eq? n 0)
"" ""
(sprintf "[~A]" (- n 2))))) (sprintf "[~A]" n))))
((#\~) "~")) ((#\~) "~"))
resl)) resl))
(loop (cdr fmtl) (loop (cdr fmtl)