Use month data type for joined key.

This commit is contained in:
Dominik Pantůček 2023-03-19 18:55:32 +01:00
parent cd2a08e2ec
commit 5f62bb319e
3 changed files with 36 additions and 8 deletions

View file

@ -30,6 +30,7 @@
(
*member-file-context*
*member-file-check-syntax*
*member-default-joined*
load-member-file
member-file-tests!
)
@ -63,6 +64,8 @@
;; 'quiet - ignore
(define *member-file-check-syntax* (make-parameter 'error))
(define *member-default-joined* (make-parameter (make-month 2015 1)))
;; Derived keys
(define start/stop-keys-keys
(map
@ -233,19 +236,29 @@
m)
(cdr ks))))))
;; Converts given key to month if it is a string. Leaves untouched
;; otherwise.
(define (convert-member-key:month m k)
(let ((v (dict-ref m k)))
(if (string? v)
(dict-set m k (string->month v))
m)))
;; All conversions in one place
(define (convert-member-keys m)
(convert-member-keys:card
(convert-member-key:credit
(convert-member-keys:markers->periods m 'suspend 'student))
'card 'desfire))
(convert-member-key:month
(convert-member-keys:card
(convert-member-key:credit
(convert-member-keys:markers->periods m 'suspend 'student))
'card 'desfire)
'joined))
;; Fills-in the defaults
(define (make-default-member-info)
(dict-set
(make-dict)
'joined
"2015-01"))
(*member-default-joined*)))
;; Processes all lines and returns a dictionary representing given
;; member.