Prepare stats infrastructure.
This commit is contained in:
parent
15926d124e
commit
cd2a08e2ec
2 changed files with 30 additions and 5 deletions
|
@ -260,17 +260,34 @@
|
|||
(member-nick mr)))
|
||||
mrs))))
|
||||
|
||||
;; Returns dictionary with statistics about the members base.
|
||||
(define (members-base-info mb)
|
||||
(let* ((di0 (make-dict))
|
||||
(di1 (dict-set di0 'invalid
|
||||
(filter-members-by-predicate mb
|
||||
(compose not is-4digit-prime? member-id))))
|
||||
(di2 (dict-set di1 'active
|
||||
(filter-members-by-predicate mb member-active?)))
|
||||
(di3 (dict-set di2 'suspended
|
||||
(filter-members-by-predicate mb member-suspended?)))
|
||||
(di4 (dict-set di3 'students
|
||||
(filter-members-by-predicate mb member-student?)))
|
||||
(di5 (dict-set di4 'destroyed
|
||||
(filter-members-by-predicate mb member-destroyed?))))
|
||||
di5))
|
||||
|
||||
;; Basic information about members-base in human-readable form.
|
||||
(define (print-members-base-info mb)
|
||||
(let ((nicks (list-members-nicks mb))
|
||||
(ids (list-members-ids mb)))
|
||||
(print "Known members: "
|
||||
(length nicks))
|
||||
(let ((invalid-mrs (filter-members-by-predicate mb (compose not is-4digit-prime? member-id)))
|
||||
(active-mrs (filter-members-by-predicate mb member-active?))
|
||||
(suspended-mrs (filter-members-by-predicate mb member-suspended?))
|
||||
(destroyed-mrs (filter-members-by-predicate mb member-destroyed?))
|
||||
(student-mrs (filter-members-by-predicate mb member-student?)))
|
||||
(let* ((bi (members-base-info mb))
|
||||
(invalid-mrs (dict-ref bi 'invalid))
|
||||
(active-mrs (dict-ref bi 'active))
|
||||
(suspended-mrs (dict-ref bi 'suspended))
|
||||
(destroyed-mrs (dict-ref bi 'destroyed))
|
||||
(student-mrs (dict-ref bi 'students)))
|
||||
(print a:success " Active (" (length active-mrs) "): " a:default
|
||||
(member-records->nicks-string active-mrs))
|
||||
(print a:warning " Suspended (" (length suspended-mrs) "): " a:default
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
month=?
|
||||
month<?
|
||||
month-diff
|
||||
month-add
|
||||
month-tests!
|
||||
)
|
||||
|
||||
|
@ -113,6 +114,12 @@
|
|||
(error 'month-diff "Second argument is not a valid month" t))
|
||||
(error 'month-diff "First argument is not a valid month" f)))
|
||||
|
||||
;; Returns a month n months after the month m.
|
||||
(define (month-add m n)
|
||||
(let ((mi (+ (* 12 (car m)) (cadr m) n)))
|
||||
(list (quotient mi 12)
|
||||
(remainder mi 12))))
|
||||
|
||||
;; Performs self-tests of the month module.
|
||||
(define (month-tests!)
|
||||
(run-tests
|
||||
|
@ -136,6 +143,7 @@
|
|||
(test-eq? month-diff (month-diff '(2023 1) '(2023 2)) 1)
|
||||
(test-eq? month-diff (month-diff '(2023 1) '(2023 12)) 11)
|
||||
(test-eq? month-diff (month-diff '(2023 1) '(2022 2)) -11)
|
||||
(test-eq? month-add (month-add '(2023 1) 2) '(2023 3))
|
||||
))
|
||||
|
||||
)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue