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 \
|
MEMBER-PARSER-SOURCES=member-parser.scm member-record.import.scm \
|
||||||
testing.import.scm dictionary.import.scm month.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.so: member-parser.o
|
||||||
member-parser.o: member-parser.import.scm
|
member-parser.o: member-parser.import.scm
|
||||||
|
|
|
@ -41,7 +41,8 @@
|
||||||
dictionary
|
dictionary
|
||||||
month
|
month
|
||||||
period
|
period
|
||||||
utils)
|
utils
|
||||||
|
configuration)
|
||||||
|
|
||||||
;; Pass 2: known keys and multikeys
|
;; Pass 2: known keys and multikeys
|
||||||
(define member-schema-known-keys '(nick mail phone name born joined destroyed))
|
(define member-schema-known-keys '(nick mail phone name born joined destroyed))
|
||||||
|
@ -101,6 +102,12 @@
|
||||||
(else
|
(else
|
||||||
(member-record-sub-set mr output key (car value))))))))
|
(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
|
;; Pass 0: Removes any comments and removes any leading and trailing
|
||||||
;; whitespace.
|
;; whitespace.
|
||||||
(define (preprocess-member-line line)
|
(define (preprocess-member-line line)
|
||||||
|
@ -215,8 +222,9 @@
|
||||||
(let* ((mrif (member-record-input-file mr))
|
(let* ((mrif (member-record-input-file mr))
|
||||||
(source (read-lines mrif))
|
(source (read-lines mrif))
|
||||||
(mrp (parse-member-lines mr source)))
|
(mrp (parse-member-lines mr source)))
|
||||||
|
(member-schema-finalize
|
||||||
(interpret-member-file
|
(interpret-member-file
|
||||||
(process-member-file mrp))))
|
(process-member-file mrp)))))
|
||||||
|
|
||||||
;; Performs self-tests of the member-parser module.
|
;; Performs self-tests of the member-parser module.
|
||||||
(define (member-parser-tests!)
|
(define (member-parser-tests!)
|
||||||
|
|
|
@ -38,6 +38,7 @@
|
||||||
member-record-sub-ref
|
member-record-sub-ref
|
||||||
member-record-sub-set
|
member-record-sub-set
|
||||||
member-record-sub-prepend
|
member-record-sub-prepend
|
||||||
|
member-record-sub-has-key?
|
||||||
|
|
||||||
member-record-info
|
member-record-info
|
||||||
|
|
||||||
|
@ -157,6 +158,10 @@
|
||||||
(cons val
|
(cons val
|
||||||
(member-record-sub-ref mr sec key '()))))
|
(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
|
;; Returns member info key value
|
||||||
(define (member-record-info mr key . defaults)
|
(define (member-record-info mr key . defaults)
|
||||||
(let ((info (dict-ref mr 'info)))
|
(let ((info (dict-ref mr 'info)))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue