Periods parsing in schema.

This commit is contained in:
Dominik Pantůček 2023-03-25 20:23:11 +01:00
parent d4a253d298
commit 0dd4b6aed4

View file

@ -38,7 +38,9 @@
(chicken irregex) (chicken irregex)
member2-record member2-record
testing testing
dictionary) dictionary
month
period)
;; Pass 2: known keys and multikeys ;; Pass 2: known keys and multikeys
(define member-schema-known-keys '(nick mail phone name born joined destroyed)) (define member-schema-known-keys '(nick mail phone name born joined destroyed))
@ -62,15 +64,30 @@
mr mr
(let ((value (car values))) (let ((value (car values)))
(loop (cdr values) (loop (cdr values)
(member-record-sub-prepend mr (member-record-sub-prepend
output mr
kind output
(list marker (car value) (cdr value))))))))) kind
(list marker
(string->month (car value))
(cdr value)))))))))
(else (else
(member-record-sub-set mr output key value))))) (member-record-sub-set mr output key value)))))
(info (info
,(lambda (mr output key value) ,(lambda (mr output key value)
mr)))) (case key
((student suspend)
(let* ((res (period-markers->periods value))
(ok? (car res))
(periods (cadr res))
(msg (caddr res))
(line-number (cadddr res))
(mr1 (member-record-sub-set mr output key periods)))
(if ok?
mr1
(member-record-add-highlight mr1 line-number msg 3 'error))))
(else
(member-record-sub-set mr output key (car value))))))))
;; Pass 0: Removes any comments and removes any leading and trailing ;; Pass 0: Removes any comments and removes any leading and trailing
;; whitespace. ;; whitespace.