Work on generic nick validation.
This commit is contained in:
parent
cf86180222
commit
f586d89fca
1 changed files with 30 additions and 7 deletions
|
@ -55,6 +55,7 @@
|
|||
))
|
||||
(define start/stop-keys '(student suspend))
|
||||
(define multi-keys '(card desfire credit))
|
||||
(define validated-keys '(nick))
|
||||
|
||||
;; Symbol used for error reporting in member file keys.
|
||||
(define member-file-error-symbol
|
||||
|
@ -178,7 +179,9 @@
|
|||
(else
|
||||
(if (eq? k member-file-error-symbol)
|
||||
(dict-set d k (cons v (dict-ref d k '())))
|
||||
(dict-set d k v)))))))
|
||||
(dict-set d k (if (member k validated-keys)
|
||||
(cons v line-number)
|
||||
v))))))))
|
||||
|
||||
;; Converts given key in member info dictionary from period markers
|
||||
;; list to periods.
|
||||
|
@ -266,15 +269,35 @@
|
|||
(cons lines
|
||||
(dict-ref m esym '())))))
|
||||
|
||||
;; Performs actual validation, optionally adding error to the list
|
||||
(define (validate-member-key m key v line-number)
|
||||
m)
|
||||
|
||||
;; Gets cons of nick and line number and if validation fails, adds
|
||||
;; error to the error key.
|
||||
(define (convert-member-key:validation m)
|
||||
(let loop ((keys validated-keys)
|
||||
(m m))
|
||||
(if (null? keys)
|
||||
m
|
||||
(let ((key (car keys)))
|
||||
(loop (cdr keys)
|
||||
(if (dict-has-key? m key)
|
||||
(let ((v (dict-ref m key)))
|
||||
(validate-member-key (dict-set m key (car v))
|
||||
key (car v) (cdr v)))
|
||||
m))))))
|
||||
|
||||
;; All conversions in one place, including error reporting.
|
||||
(define (convert-member-keys m lines file-name)
|
||||
(convert-member-key:error
|
||||
(convert-member-key:validation
|
||||
(convert-member-key:month
|
||||
(convert-member-keys:card
|
||||
(convert-member-key:credit
|
||||
(convert-member-keys:markers->periods m 'suspend 'student))
|
||||
'card 'desfire)
|
||||
'joined)
|
||||
'joined))
|
||||
member-file-error-symbol lines file-name))
|
||||
|
||||
;; Fills-in the defaults
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue