diff --git a/src/members-print.scm b/src/members-print.scm index 229fec5..cd4a954 100644 --- a/src/members-print.scm +++ b/src/members-print.scm @@ -195,6 +195,21 @@ fmt) 60))) + ;; Generic table of members attributes + (define (members-attrs-table mrs fmt hdr row) + (let loop ((mrs mrs) + (tbl (list hdr))) + (if (null? mrs) + (reverse tbl) + (loop (cdr mrs) + (let ((mr (car mrs))) + (cons (map (lambda (cs) + (if (procedure? cs) + (cs mr) + (fmt cs mr))) + row) + tbl)))))) + ;; Prints nicely aligned members base info (define (print-members-base-table mb) (let* ((bi (mbase-info mb)) @@ -232,7 +247,16 @@ (members-table-row (ansi #:red #:bold) "Problems:" problem-mrs "~N~E ~A")) (if (null? debtor-mrs) #f - (members-table-row (ansi #:magenta #:bold) "Debtors:" debtor-mrs "~N ~B (~L)")) + (list (ansi-string "\t" #:magenta #:bold "Debtors:") + (format "~A" (length debtor-mrs)) + (table->string + (members-attrs-table debtor-mrs + brmember-format + (list "Name" "Balance" "Last Payment") + (list "~N" "\t~B" "~L")) + #:ansi #t + #:row0-border #t + #:col-border #t))) )) #:ansi #t #:row-border #t