From 528d4b52b8d98b2ab01668138dc279c3a06fce8f Mon Sep 17 00:00:00 2001 From: Christopher Lam Date: Sat, 30 Mar 2019 20:04:41 +0800 Subject: [PATCH] [view-column] compact loops, eradicate set! simple modernising loops --- .../report/utility-reports/view-column.scm | 58 +++++++++---------- 1 file changed, 27 insertions(+), 31 deletions(-) diff --git a/gnucash/report/utility-reports/view-column.scm b/gnucash/report/utility-reports/view-column.scm index 49a300ddd4..4cfdb84192 100644 --- a/gnucash/report/utility-reports/view-column.scm +++ b/gnucash/report/utility-reports/view-column.scm @@ -85,24 +85,21 @@ (current-row-num 0)) ;; make sure each subreport has an option change callback that - ;; pings the parent - (let ((new-reports '())) - (for-each - (lambda (report-info) - (let ((child (car report-info)) - (rowspan (cadr report-info)) - (colspan (caddr report-info)) - (callback (cadddr report-info))) - (if (not callback) - (begin - (set! callback - (make-child-options-callback - report (gnc-report-find child))) - (set! report-info - (list child rowspan colspan callback)))) - (set! new-reports (cons report-info new-reports)))) - reports) - (gnc:option-set-value report-opt (reverse new-reports))) + ;; pings the parent + (let loop ((new-reports '()) + (reports reports)) + (if (null? reports) + (gnc:option-set-value report-opt (reverse new-reports)) + (let* ((report-info (car reports)) + (child (car report-info)) + (rowspan (cadr report-info)) + (colspan (caddr report-info)) + (callback (or (cadddr report-info) + (make-child-options-callback + report (gnc-report-find child))))) + (loop (cons (list child rowspan colspan callback) + new-reports) + (cdr reports))))) ;; we really would rather do something smart here with the ;; report's cached text if possible. For the moment, we'll have @@ -223,19 +220,18 @@ (define (cleanup-options report) (let* ((options (gnc:report-options report)) - (report-opt (gnc:lookup-option options "__general" "report-list")) - (reports (gnc:option-value report-opt)) - (new-reports '())) - (for-each - (lambda (report-info) - (let ((rep (car report-info)) - (rowspan (cadr report-info)) - (colspan (caddr report-info))) - (set! report-info - (list rep rowspan colspan #f)) - (set! new-reports (cons report-info new-reports)))) - reports) - (gnc:option-set-value report-opt (reverse new-reports)))) + (report-opt (gnc:lookup-option options "__general" "report-list"))) + (let loop ((new-reports '()) + (reports (gnc:option-value report-opt))) + (if (null? reports) + (gnc:option-set-value report-opt (reverse new-reports)) + (let* ((report-info (car reports)) + (child (car report-info)) + (rowspan (cadr report-info)) + (colspan (caddr report-info))) + (loop (cons (list child rowspan colspan #f) + new-reports) + (cdr reports))))))) ;; define the view now. (gnc:define-report