Credit conversions.
This commit is contained in:
parent
342797575f
commit
0d20884637
2 changed files with 34 additions and 6 deletions
2
Makefile
2
Makefile
|
@ -50,7 +50,7 @@ brmsaptool: $(BRMSAPTOOL-DEPS)
|
||||||
$(CSC) -o $@ $<
|
$(CSC) -o $@ $<
|
||||||
|
|
||||||
brmsaptool-static: $(BRMSAPTOOL-OBJS)
|
brmsaptool-static: $(BRMSAPTOOL-OBJS)
|
||||||
$(CSC) -static -k -o $@ $(BRMSAPTOOL-SOURCES)
|
$(CSC) -static -o $@ $(BRMSAPTOOL-SOURCES)
|
||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
|
|
|
@ -176,10 +176,12 @@
|
||||||
;; Converts given key in member info dictionary from period markers
|
;; Converts given key in member info dictionary from period markers
|
||||||
;; list to periods.
|
;; list to periods.
|
||||||
(define (convert-member-key:markers->periods m k)
|
(define (convert-member-key:markers->periods m k)
|
||||||
|
(if (dict-has-key? m k)
|
||||||
(dict-set m k
|
(dict-set m k
|
||||||
(period-markers->periods
|
(period-markers->periods
|
||||||
(sort-period-markers
|
(sort-period-markers
|
||||||
(dict-ref m k '())))))
|
(dict-ref m k '()))))
|
||||||
|
m))
|
||||||
|
|
||||||
;; Converts all given keys using period-markers->periods.
|
;; Converts all given keys using period-markers->periods.
|
||||||
(define (convert-member-keys:markers->periods m . ks)
|
(define (convert-member-keys:markers->periods m . ks)
|
||||||
|
@ -190,6 +192,32 @@
|
||||||
(loop (convert-member-key:markers->periods m (car ks))
|
(loop (convert-member-key:markers->periods m (car ks))
|
||||||
(cdr ks)))))
|
(cdr ks)))))
|
||||||
|
|
||||||
|
;; Credit values contain amount as the first token. Anything after
|
||||||
|
;; the first whitespace character is added as label of the credit
|
||||||
|
;; transaction. The result is cons of number and string.
|
||||||
|
(define (convert-member-value:credit v)
|
||||||
|
(let* ((va (string-split v))
|
||||||
|
(v0 (car va))
|
||||||
|
(vr (substring v (string-length v0))))
|
||||||
|
(cons (string->number v0)
|
||||||
|
vr)))
|
||||||
|
|
||||||
|
;; If member information dictionary contains 'credit, all elements of
|
||||||
|
;; the list under this key are converted to cons of number (amount)
|
||||||
|
;; and string (label / description).
|
||||||
|
(define (convert-member-key:credit m)
|
||||||
|
(if (dict-has-key? m 'credit)
|
||||||
|
(dict-set m 'credit
|
||||||
|
(reverse
|
||||||
|
(map convert-member-value:credit
|
||||||
|
(dict-ref m 'credit))))
|
||||||
|
m))
|
||||||
|
|
||||||
|
;; All conversions in one place
|
||||||
|
(define (convert-member-keys m)
|
||||||
|
(convert-member-key:credit
|
||||||
|
(convert-member-keys:markers->periods m 'suspend 'student)))
|
||||||
|
|
||||||
;; Fills-in the defaults
|
;; Fills-in the defaults
|
||||||
(define (make-default-member-info)
|
(define (make-default-member-info)
|
||||||
(dict-set
|
(dict-set
|
||||||
|
@ -204,7 +232,7 @@
|
||||||
(r (make-default-member-info))
|
(r (make-default-member-info))
|
||||||
(line-number 1))
|
(line-number 1))
|
||||||
(if (null? ls)
|
(if (null? ls)
|
||||||
(convert-member-keys:markers->periods r 'suspend 'student)
|
(convert-member-keys r)
|
||||||
(let ((p (split-member-line (car ls) file-name lines line-number)))
|
(let ((p (split-member-line (car ls) file-name lines line-number)))
|
||||||
(loop (cdr ls)
|
(loop (cdr ls)
|
||||||
(if p
|
(if p
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue