Configurable start stop markers.
This commit is contained in:
parent
cbaf49183b
commit
99b86ff9c2
1 changed files with 28 additions and 21 deletions
|
@ -52,31 +52,38 @@
|
|||
|
||||
(define known-keys (append mandatory-keys optional-keys))
|
||||
|
||||
;; Dynamic start/stop markers
|
||||
(define start-stop-markers-lookup
|
||||
'(
|
||||
(studentstart student start)
|
||||
(studentstop student stop)
|
||||
(suspendstart suspend start)
|
||||
(suspendstop suspend stop)
|
||||
|
||||
;;(joined member start)
|
||||
;;(destroyed member stop)
|
||||
))
|
||||
(define start-stop-markers (map car start-stop-markers-lookup))
|
||||
|
||||
;; Pass 3: Interpreter passes
|
||||
(define member-schema-interpreters
|
||||
`((pass-markers
|
||||
,(lambda (mr output key value)
|
||||
(case key
|
||||
((studentstart studentstop suspendstart suspendstop)
|
||||
(let ((marker (if (member key '(studentstart suspendstart))
|
||||
'start
|
||||
'stop))
|
||||
(kind (if (member key '(studentstart studentstop))
|
||||
'student
|
||||
'suspend)))
|
||||
(foldl (lambda (mr value)
|
||||
(let* ((mspec (string-first+rest (car value)))
|
||||
(month (string->month (car mspec)))
|
||||
(comment (cdr mspec)))
|
||||
(if month
|
||||
(member-record-sub-prepend
|
||||
mr output kind
|
||||
(list marker month (cdr value) comment))
|
||||
(member-record-add-highlight
|
||||
mr (cdr value) "Invalid month specification" 3 'error))))
|
||||
mr value)))
|
||||
(else
|
||||
(member-record-sub-set mr output key value)))))
|
||||
(if (member key start-stop-markers)
|
||||
(let ((marker (caddr (assq key start-stop-markers-lookup)))
|
||||
(kind (cadr (assq key start-stop-markers-lookup))))
|
||||
(foldl (lambda (mr value)
|
||||
(let* ((mspec (string-first+rest (car value)))
|
||||
(month (string->month (car mspec)))
|
||||
(comment (cdr mspec)))
|
||||
(if month
|
||||
(member-record-sub-prepend
|
||||
mr output kind
|
||||
(list marker month (cdr value) comment))
|
||||
(member-record-add-highlight
|
||||
mr (cdr value) "Invalid month specification" 3 'error))))
|
||||
mr value))
|
||||
(member-record-sub-set mr output key value))))
|
||||
(info
|
||||
,(lambda (mr output key value)
|
||||
(case key
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue