Prepare sub-key setting.

This commit is contained in:
Dominik Pantůček 2023-03-25 18:54:19 +01:00
parent a6043c0fc2
commit 92b8ff0c78
2 changed files with 36 additions and 6 deletions

View file

@ -47,10 +47,17 @@
;; Pass 3: Interpreter passes
(define member-schema-interpreters
`((pass-markers
,(lambda (mr acc key value)
mr))
,(lambda (mr output key value)
(case key
((studentstart studentstop suspendstart suspendstop)
(let ((marker (if (member key '(studentstart suspendstart))
'start
'stop)))
mr))
(else
mr))))
(info
,(lambda (mr acc key value)
,(lambda (mr output key value)
mr))))
;; Pass 0: Removes any comments and removes any leading and trailing
@ -133,9 +140,17 @@
(member-record-add-highlight mr number "Unknown key" 2 'warning)
processed)))))))
;; Pass 3+: Single interpreter pass
(define (interpreter-pass mr output-name input pass-proc)
(dict-set mr output-name '()))
;; Pass 3+: Single interpreter pass - input must be
;; dictionary. Output is top-level key of member record.
(define (interpreter-pass mr output input pass-proc)
(let loop ((keys (dict-keys input))
(mr (dict-set mr output (make-dict))))
(if (null? keys)
mr
(let ((key (car keys)))
(loop (cdr keys)
(pass-proc mr output key
(dict-ref input key)))))))
;; Pass 3+: Interpreter passes
(define (interpret-member-file mr . starts)