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 start/stop-keys '(student suspend))
|
||||||
(define multi-keys '(card desfire credit))
|
(define multi-keys '(card desfire credit))
|
||||||
|
(define validated-keys '(nick))
|
||||||
|
|
||||||
;; Symbol used for error reporting in member file keys.
|
;; Symbol used for error reporting in member file keys.
|
||||||
(define member-file-error-symbol
|
(define member-file-error-symbol
|
||||||
|
@ -178,7 +179,9 @@
|
||||||
(else
|
(else
|
||||||
(if (eq? k member-file-error-symbol)
|
(if (eq? k member-file-error-symbol)
|
||||||
(dict-set d k (cons v (dict-ref d k '())))
|
(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
|
;; Converts given key in member info dictionary from period markers
|
||||||
;; list to periods.
|
;; list to periods.
|
||||||
|
@ -266,15 +269,35 @@
|
||||||
(cons lines
|
(cons lines
|
||||||
(dict-ref m esym '())))))
|
(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.
|
;; All conversions in one place, including error reporting.
|
||||||
(define (convert-member-keys m lines file-name)
|
(define (convert-member-keys m lines file-name)
|
||||||
(convert-member-key:error
|
(convert-member-key:error
|
||||||
|
(convert-member-key:validation
|
||||||
(convert-member-key:month
|
(convert-member-key:month
|
||||||
(convert-member-keys:card
|
(convert-member-keys:card
|
||||||
(convert-member-key:credit
|
(convert-member-key:credit
|
||||||
(convert-member-keys:markers->periods m 'suspend 'student))
|
(convert-member-keys:markers->periods m 'suspend 'student))
|
||||||
'card 'desfire)
|
'card 'desfire)
|
||||||
'joined)
|
'joined))
|
||||||
member-file-error-symbol lines file-name))
|
member-file-error-symbol lines file-name))
|
||||||
|
|
||||||
;; Fills-in the defaults
|
;; Fills-in the defaults
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue