[report-utilities] streamline (match) use

reduces the indent level
pull/642/head
Christopher Lam 6 years ago
parent 97eb3c7e98
commit 0c5bded6fc

@ -506,28 +506,26 @@ flawed. see report-utilities.scm. please update reports.")
(() (reverse result))
((date . rest)
(define (before-date? s) (< (split->date s) date))
(define (after-date? s) (< date (split->date s)))
(match splits
;; end of splits, but still has dates. pad with last-result
;; until end of dates.
(() (lp '() rest (cons last-result result) last-result))
((head . tail)
(let ((next (and (pair? tail) (car tail))))
(cond
;; the next split is still before date.
((and next (< (split->date next) date))
(lp tail dates result (split->elt head)))
;; the next split is still before date.
((and (_ (? before-date?) . _) (head . tail))
(lp tail dates result (split->elt head)))
;; head split after date, accumulate previous result
((< date (split->date head))
(lp splits rest (cons last-result result) last-result))
;; head split after date, accumulate previous result
(((? after-date?) . tail)
(lp splits rest (cons last-result result) last-result))
;; head split before date, next split after date, or end.
(else
(let ((head-result (split->elt head)))
(lp tail rest (cons head-result result) head-result)))))))))))
;; head split before date, next split after date, or end.
((head . tail)
(let ((head-result (split->elt head)))
(lp tail rest (cons head-result result) head-result))))))))
;; This works similar as above but returns a commodity-collector,
;; thus takes care of children accounts with different currencies.

Loading…
Cancel
Save