From 0dd4b6aed4db6064bd8f5a3c0a414407b9675707 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Pant=C5=AF=C4=8Dek?= Date: Sat, 25 Mar 2023 20:23:11 +0100 Subject: [PATCH] Periods parsing in schema. --- member-parser.scm | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) 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.