From d4a253d2982fe62aafaff079c8cf6731761045cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Pant=C5=AF=C4=8Dek?= Date: Sat, 25 Mar 2023 19:03:23 +0100 Subject: [PATCH] Student and suspend markers parsing. --- member-parser.scm | 18 +++++++++++++++--- member2-record.scm | 7 +++++++ 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/member-parser.scm b/member-parser.scm index 1d8ab20..52e2401 100644 --- a/member-parser.scm +++ b/member-parser.scm @@ -52,10 +52,22 @@ ((studentstart studentstop suspendstart suspendstop) (let ((marker (if (member key '(studentstart suspendstart)) 'start - 'stop))) - mr)) + 'stop)) + (kind (if (member key '(studentstart studentstop)) + 'student + 'suspend))) + (let loop ((values value) + (mr mr)) + (if (null? values) + mr + (let ((value (car values))) + (loop (cdr values) + (member-record-sub-prepend mr + output + kind + (list marker (car value) (cdr value))))))))) (else - mr)))) + (member-record-sub-set mr output key value))))) (info ,(lambda (mr output key value) mr)))) diff --git a/member2-record.scm b/member2-record.scm index c9e6cb0..66b9e61 100644 --- a/member2-record.scm +++ b/member2-record.scm @@ -35,6 +35,7 @@ member-record-add-highlight member-record-sub-ref member-record-sub-set + member-record-sub-prepend member-record-tests! ) @@ -102,6 +103,12 @@ (dict-set mr sec (dict-set sec-dict key val)))) + ;; Prepends value to given subkey + (define (member-record-sub-prepend mr sec key val) + (member-record-sub-set mr sec key + (cons val + (member-record-sub-ref mr sec key '())))) + ;; Self-tests (define (member-record-tests!) (run-tests