Member record finalization.
This commit is contained in:
parent
4d43ce29d8
commit
389fd3dc1c
3 changed files with 17 additions and 4 deletions
2
Makefile
2
Makefile
|
@ -190,7 +190,7 @@ cards.import.scm: $(CARDS-SOURCES)
|
|||
|
||||
MEMBER-PARSER-SOURCES=member-parser.scm member-record.import.scm \
|
||||
testing.import.scm dictionary.import.scm month.import.scm \
|
||||
period.import.scm utils.import.scm
|
||||
period.import.scm utils.import.scm configuration.import.scm
|
||||
|
||||
member-parser.so: member-parser.o
|
||||
member-parser.o: member-parser.import.scm
|
||||
|
|
|
@ -41,7 +41,8 @@
|
|||
dictionary
|
||||
month
|
||||
period
|
||||
utils)
|
||||
utils
|
||||
configuration)
|
||||
|
||||
;; Pass 2: known keys and multikeys
|
||||
(define member-schema-known-keys '(nick mail phone name born joined destroyed))
|
||||
|
@ -101,6 +102,12 @@
|
|||
(else
|
||||
(member-record-sub-set mr output key (car value))))))))
|
||||
|
||||
;; Final checks - add defaults
|
||||
(define (member-schema-finalize mr)
|
||||
(if (member-record-sub-has-key? mr 'info 'joined)
|
||||
mr
|
||||
(member-record-sub-set mr 'info 'joined (*member-default-joined*))))
|
||||
|
||||
;; Pass 0: Removes any comments and removes any leading and trailing
|
||||
;; whitespace.
|
||||
(define (preprocess-member-line line)
|
||||
|
@ -215,8 +222,9 @@
|
|||
(let* ((mrif (member-record-input-file mr))
|
||||
(source (read-lines mrif))
|
||||
(mrp (parse-member-lines mr source)))
|
||||
(interpret-member-file
|
||||
(process-member-file mrp))))
|
||||
(member-schema-finalize
|
||||
(interpret-member-file
|
||||
(process-member-file mrp)))))
|
||||
|
||||
;; Performs self-tests of the member-parser module.
|
||||
(define (member-parser-tests!)
|
||||
|
|
|
@ -38,6 +38,7 @@
|
|||
member-record-sub-ref
|
||||
member-record-sub-set
|
||||
member-record-sub-prepend
|
||||
member-record-sub-has-key?
|
||||
|
||||
member-record-info
|
||||
|
||||
|
@ -157,6 +158,10 @@
|
|||
(cons val
|
||||
(member-record-sub-ref mr sec key '()))))
|
||||
|
||||
;; Returns true if given section contains given key
|
||||
(define (member-record-sub-has-key? mr sec key)
|
||||
(dict-has-key? (dict-ref mr sec) key))
|
||||
|
||||
;; Returns member info key value
|
||||
(define (member-record-info mr key . defaults)
|
||||
(let ((info (dict-ref mr 'info)))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue