Finish member-format for nick and id.

This commit is contained in:
Dominik Pantůček 2023-03-19 19:49:54 +01:00
parent cd6051e376
commit f7d062f097
2 changed files with 19 additions and 3 deletions

View file

@ -37,6 +37,7 @@
member-nick member-nick
member-id member-id
member-existing? member-existing?
member-format
member-record-tests! member-record-tests!
) )
@ -136,6 +137,23 @@
(and joined (and joined
(month<? joined (*current-month*))))) (month<? joined (*current-month*)))))
;; Member formatting function for general use.
(define (member-format fmt mr)
(let loop ((fmtl (string->list fmt))
(resl '()))
(if (null? fmtl)
(string-intersperse (reverse resl) "")
(let ((ch (car fmtl)))
(if (eq? ch #\~)
(loop (cddr fmtl)
(cons (case (cadr fmtl)
((#\N) (mr-ref mr 'nick))
((#\I) (number->string (mr-ref mr 'id)))
((#\~) "~"))
resl))
(loop (cdr fmtl)
(cons (make-string 1 (car fmtl)) resl)))))))
;; Performs module self-tests. ;; Performs module self-tests.
(define (member-record-tests!) (define (member-record-tests!)
(run-tests (run-tests

View file

@ -259,9 +259,7 @@
(car sl)))) (car sl))))
(string-intersperse (string-intersperse
(map (lambda (mr) (map (lambda (mr)
(sprintf "~A (~A)" (member-format "~N (~I)" mr))
(member-id mr)
(member-nick mr)))
mrs)))) mrs))))
;; Returns dictionary with statistics about the members base. ;; Returns dictionary with statistics about the members base.