Member sorting.

This commit is contained in:
Dominik Pantůček 2023-03-20 12:44:41 +01:00
parent 59a52fb0d9
commit 8564056320
2 changed files with 12 additions and 6 deletions

View file

@ -41,6 +41,7 @@
member-suspended-months member-suspended-months
member-source member-source
print-member-source print-member-source
member<?
member-record-tests! member-record-tests!
) )
@ -194,6 +195,11 @@
"..." ; Not used "..." ; Not used
))) )))
;; Comparator of member records based on nickname.
(define (member<? a b)
(string-ci<? (member-nick a)
(member-nick b)))
;; Performs module self-tests. ;; Performs module self-tests.
(define (member-record-tests!) (define (member-record-tests!)
(run-tests (run-tests

View file

@ -308,23 +308,23 @@
(destroyed-mrs (dict-ref bi 'destroyed)) (destroyed-mrs (dict-ref bi 'destroyed))
(student-mrs (dict-ref bi 'students))) (student-mrs (dict-ref bi 'students)))
(print a:success " Active (" (length active-mrs) "): " a:default (print a:success " Active (" (length active-mrs) "): " a:default
(member-records->string active-mrs)) (member-records->string (sort active-mrs member<?)))
(print a:warning " Suspended (" (length suspended-mrs) "): " a:default (print a:warning " Suspended (" (length suspended-mrs) "): " a:default
(member-records->string suspended-mrs)) (member-records->string (sort suspended-mrs member<?)))
(print a:warning " Destroyed (" (length destroyed-mrs) "): " a:default (print a:warning " Destroyed (" (length destroyed-mrs) "): " a:default
(member-records->string destroyed-mrs)) (member-records->string (sort destroyed-mrs member<?)))
(print a:highlight " Students (" (length student-mrs) "): " a:default (print a:highlight " Students (" (length student-mrs) "): " a:default
(member-records->string student-mrs)) (member-records->string (sort student-mrs member<?)))
(let ((suspended2 (filter-members-by-predicate (let ((suspended2 (filter-members-by-predicate
suspended-mrs suspended-mrs
(lambda (mr) (lambda (mr)
(>= (member-suspended-months mr) 24))))) (>= (member-suspended-months mr) 24)))))
(when (not (null? suspended2)) (when (not (null? suspended2))
(print " Suspended for at least 24 months: " (print " Suspended for at least 24 months: "
(member-records->string suspended2 "~N (~S)")))) (member-records->string (sort suspended2 member<?) "~N (~S)"))))
(when (not (null? invalid-mrs)) (when (not (null? invalid-mrs))
(print a:error " Invalid Id (" (length invalid-mrs) "): " (print a:error " Invalid Id (" (length invalid-mrs) "): "
(member-records->string invalid-mrs "~N (~I)") (member-records->string (sort invalid-mrs member<?) "~N (~I)")
a:default))))) a:default)))))
;; Prints the stats in format used by gnuplot. ;; Prints the stats in format used by gnuplot.