diff --git a/member-parser.scm b/member-parser.scm index 52e2401..98f7871 100644 --- a/member-parser.scm +++ b/member-parser.scm @@ -38,7 +38,9 @@ (chicken irregex) member2-record testing - dictionary) + dictionary + month + period) ;; Pass 2: known keys and multikeys (define member-schema-known-keys '(nick mail phone name born joined destroyed)) @@ -62,15 +64,30 @@ mr (let ((value (car values))) (loop (cdr values) - (member-record-sub-prepend mr - output - kind - (list marker (car value) (cdr value))))))))) + (member-record-sub-prepend + mr + output + kind + (list marker + (string->month (car value)) + (cdr value))))))))) (else (member-record-sub-set mr output key value))))) (info ,(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 ;; whitespace.