diff --git a/member-parser.scm b/member-parser.scm index c89187a..50f81e7 100644 --- a/member-parser.scm +++ b/member-parser.scm @@ -46,8 +46,13 @@ ;; Pass 2: known keys (define mandatory-keys '(nick name mail phone)) - (define optional-keys '(born joined destroyed)) - (define known-multikeys '(card desfire credit studentstart studentstop suspendstart suspendstop)) + (define optional-keys '(born)) + (define known-multikeys + '(card desfire + credit + studentstart studentstop + suspendstart suspendstop + joined destroyed)) (define ignored-keys '(mail2)) (define known-keys (append mandatory-keys optional-keys)) @@ -60,8 +65,8 @@ (suspendstart suspend start) (suspendstop suspend stop) - ;;(joined member start) - ;;(destroyed member stop) + (joined member start) + (destroyed member stop) )) (define start-stop-markers (map car start-stop-markers-lookup)) @@ -70,8 +75,9 @@ `((pass-markers ,(lambda (mr output key value) (if (member key start-stop-markers) - (let ((marker (caddr (assq key start-stop-markers-lookup))) - (kind (cadr (assq key start-stop-markers-lookup)))) + (let* ((mk (assq key start-stop-markers-lookup)) + (marker (caddr mk)) + (kind (cadr mk))) (foldl (lambda (mr value) (let* ((mspec (string-first+rest (car value))) (month (string->month (car mspec))) @@ -87,7 +93,7 @@ (info ,(lambda (mr output key value) (case key - ((student suspend) + ((student suspend member) (let* ((res (period-markers->periods value)) (ok? (car res)) (periods (cadr res)) @@ -133,7 +139,7 @@ (apply member-record-sub-ensure mr 'info - 'joined (*member-default-joined*) + 'member (make-period (*member-default-joined*) #f) (join (map (lambda (mk) (list mk #f)) mandatory-keys)))) ;; Pass 0: Removes any comments and removes any leading and trailing diff --git a/period.scm b/period.scm index 45b8753..aaa8989 100644 --- a/period.scm +++ b/period.scm @@ -28,6 +28,7 @@ (module period ( + make-period period-since period-before period-scomment