Factor out period conversions.
This commit is contained in:
parent
6226a7bd1c
commit
4e97d6f4da
1 changed files with 18 additions and 9 deletions
|
@ -370,21 +370,30 @@
|
||||||
(else
|
(else
|
||||||
(dict-set d k v)))))
|
(dict-set d k v)))))
|
||||||
|
|
||||||
|
;; Converts given key in member info dictionary from period markers
|
||||||
|
;; list to periods.
|
||||||
|
(define (convert-member-key:markers->periods m k)
|
||||||
|
(dict-set m k
|
||||||
|
(period-markers->periods
|
||||||
|
(sort-period-markers
|
||||||
|
(dict-ref m k '())))))
|
||||||
|
|
||||||
|
;; Converts all given keys using period-markers->periods.
|
||||||
|
(define (convert-member-keys:markers->periods m . ks)
|
||||||
|
(let loop ((m m)
|
||||||
|
(ks ks))
|
||||||
|
(if (null? ks)
|
||||||
|
m
|
||||||
|
(loop (convert-member-key:markers->periods m (car ks))
|
||||||
|
(cdr ks)))))
|
||||||
|
|
||||||
;; Processes all lines and returns a dictionary representing given
|
;; Processes all lines and returns a dictionary representing given
|
||||||
;; member.
|
;; member.
|
||||||
(define (parse-member-lines ls)
|
(define (parse-member-lines ls)
|
||||||
(let loop ((ls ls)
|
(let loop ((ls ls)
|
||||||
(r (make-dict)))
|
(r (make-dict)))
|
||||||
(if (null? ls)
|
(if (null? ls)
|
||||||
(let* ((r1 (dict-set r 'suspend
|
(convert-member-keys:markers->periods r 'suspend 'student)
|
||||||
(period-markers->periods
|
|
||||||
(sort-period-markers
|
|
||||||
(dict-ref r 'suspend '())))))
|
|
||||||
(r2 (dict-set r1 'student
|
|
||||||
(period-markers->periods
|
|
||||||
(sort-period-markers
|
|
||||||
(dict-ref r1 'student '()))))))
|
|
||||||
r2)
|
|
||||||
(let ((p (parse-member-line (car ls))))
|
(let ((p (parse-member-line (car ls))))
|
||||||
(loop (cdr ls)
|
(loop (cdr ls)
|
||||||
(if p
|
(if p
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue