From 87cff0a8c8b0fcfba212c335186ac0edb8dd46fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Pant=C5=AF=C4=8Dek?= Date: Thu, 16 Mar 2023 21:42:12 +0100 Subject: [PATCH] Finish card splitting to pairs of id and label. --- member-file.scm | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/member-file.scm b/member-file.scm index 1ebd25a..41f9222 100644 --- a/member-file.scm +++ b/member-file.scm @@ -213,10 +213,32 @@ (dict-ref m 'credit)))) m)) + ;; Converts the card id and any following string to card and label / + ;; description string cons. + (define (convert-member-value:card v) + (let* ((va (string-split v)) + (v0 (car va)) + (vr (substring v (string-length v0)))) + (cons v0 vr))) + + ;; Converts card ids to cons of two strings. + (define (convert-member-keys:card m . ks) + (let loop ((m m) + (ks ks)) + (if (null? ks) + m + (let ((k (car ks))) + (loop (if (dict-has-key? m k) + (dict-set m k (map convert-member-value:card (dict-ref m k))) + m) + (cdr ks)))))) + ;; All conversions in one place (define (convert-member-keys m) - (convert-member-key:credit - (convert-member-keys:markers->periods m 'suspend 'student))) + (convert-member-keys:card + (convert-member-key:credit + (convert-member-keys:markers->periods m 'suspend 'student)) + 'card 'desfire)) ;; Fills-in the defaults (define (make-default-member-info)