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-source
print-member-source
member<?
member-record-tests!
)
@ -194,6 +195,11 @@
"..." ; 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.
(define (member-record-tests!)
(run-tests

View file

@ -308,23 +308,23 @@
(destroyed-mrs (dict-ref bi 'destroyed))
(student-mrs (dict-ref bi 'students)))
(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
(member-records->string suspended-mrs))
(member-records->string (sort suspended-mrs member<?)))
(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
(member-records->string student-mrs))
(member-records->string (sort student-mrs member<?)))
(let ((suspended2 (filter-members-by-predicate
suspended-mrs
(lambda (mr)
(>= (member-suspended-months mr) 24)))))
(when (not (null? suspended2))
(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))
(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)))))
;; Prints the stats in format used by gnuplot.