Simplify the update-data function.

This commit is contained in:
Ray Miller 2024-07-13 17:14:16 +01:00
parent ae2de95d52
commit ec51a0c919

View file

@ -81,15 +81,13 @@
;; Apply the specified updates to data (a list of rows ;; Apply the specified updates to data (a list of rows
;; read from the CSV). If a 'skip value is specified, drop ;; read from the CSV). If a 'skip value is specified, drop
;; this many leading rows. If a 'header is present, only ;; this many leading rows. If a 'header is present, only
;; apply the updates to the succeeding rows. ;; apply the updates to the succeeding rows, preserving
;; the header as-is.
(define (update-data spec data) (define (update-data spec data)
(let* ((data (drop data (or (assq-ref spec 'skip) 0))) (let* ((skip (assq-ref spec 'skip))
(header (if (assq-ref spec 'header) (car data) #f)) (data (if skip (drop data skip) data)))
(data (if header (cdr data) data))) (for-each (process-row spec) (if (assq-ref spec 'header) (cdr data) data))
(for-each (process-row spec) data) data))
(if header
(cons header data)
data)))
;; Apply the updates defined in `spec` to the statement read ;; Apply the updates defined in `spec` to the statement read
;; from input-path and write the updated data to output-path. ;; from input-path and write the updated data to output-path.