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
|
||||
(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
|
||||
;; member.
|
||||
(define (parse-member-lines ls)
|
||||
(let loop ((ls ls)
|
||||
(r (make-dict)))
|
||||
(if (null? ls)
|
||||
(let* ((r1 (dict-set r 'suspend
|
||||
(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)
|
||||
(convert-member-keys:markers->periods r 'suspend 'student)
|
||||
(let ((p (parse-member-line (car ls))))
|
||||
(loop (cdr ls)
|
||||
(if p
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue