Sort start/stop markers.
This commit is contained in:
parent
5691f8ec42
commit
388843cada
1 changed files with 14 additions and 4 deletions
|
@ -27,6 +27,7 @@
|
||||||
(chicken io)
|
(chicken io)
|
||||||
(chicken string)
|
(chicken string)
|
||||||
(chicken format)
|
(chicken format)
|
||||||
|
(chicken sort)
|
||||||
|
|
||||||
(chicken process-context))
|
(chicken process-context))
|
||||||
|
|
||||||
|
@ -221,8 +222,12 @@
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
;; Periods
|
;; Periods
|
||||||
|
|
||||||
|
;; Sorts period markers (be it start or end) chronologically and
|
||||||
|
;; returns the sorted list.
|
||||||
(define (sort-period-markers l)
|
(define (sort-period-markers l)
|
||||||
l)
|
(sort l
|
||||||
|
(lambda (a b)
|
||||||
|
(month<? (cdr a) (cdr b)))))
|
||||||
|
|
||||||
(define (period-markers->periods l)
|
(define (period-markers->periods l)
|
||||||
l)
|
l)
|
||||||
|
@ -235,6 +240,9 @@
|
||||||
|
|
||||||
(define (period-tests!)
|
(define (period-tests!)
|
||||||
(display "[test] period ")
|
(display "[test] period ")
|
||||||
|
(unit-test 'sort-period-markers
|
||||||
|
(equal? (sort-period-markers '((start 2023 1) (stop 2022 10) (start 2022 3)))
|
||||||
|
'((start 2022 3) (stop 2022 10) (start 2023 1))))
|
||||||
(print " ok."))
|
(print " ok."))
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
@ -309,14 +317,16 @@
|
||||||
(dict-ref d pk '())))))
|
(dict-ref d pk '())))))
|
||||||
(else
|
(else
|
||||||
(dict-set d k v)))))
|
(dict-set d k v)))))
|
||||||
|
|
||||||
;; 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)
|
||||||
r
|
(let* ((r1 (dict-set r 'suspend (sort-period-markers (dict-ref r 'suspend '()))))
|
||||||
|
(r2 (dict-set r1 'student (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
|
||||||
|
@ -349,4 +359,4 @@
|
||||||
;; Perform requested action
|
;; Perform requested action
|
||||||
;(print (expand-members-raw-index (load-members-raw-index)))
|
;(print (expand-members-raw-index (load-members-raw-index)))
|
||||||
|
|
||||||
(print (load-member-file "joe"))
|
(print (load-member-file "trimen"))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue