about summary refs log tree commit diff
path: root/dump
diff options
context:
space:
mode:
authorMunyoki Kilyungi2023-07-24 17:27:31 +0300
committerMunyoki Kilyungi2023-07-31 13:06:41 +0300
commit1ba6978e7b5b47b894098aa0b745c145f12308ed (patch)
tree9bf7226308cd164f443ae6338c2f67539fcd4b64 /dump
parent36d1e42d520fa2e881a00c2c4219955b20cc9abb (diff)
downloadgn-transform-databases-1ba6978e7b5b47b894098aa0b745c145f12308ed.tar.gz
Replace set! mutations with an alist
Signed-off-by: Munyoki Kilyungi <me@bonfacemunyoki.com>
Diffstat (limited to 'dump')
-rw-r--r--dump/special-forms.scm112
1 files changed, 49 insertions, 63 deletions
diff --git a/dump/special-forms.scm b/dump/special-forms.scm
index fce3a11..ad3296e 100644
--- a/dump/special-forms.scm
+++ b/dump/special-forms.scm
@@ -549,66 +549,52 @@ The above query results to triples that have the form:
 (define-syntax dump-with-documentation
   (syntax-rules ()
     ((_ (key value) ...)
-     (let ((name "")
-           (connection "")
-           (table-metadata? "")
-           (prefixes "")
-           (inputs "")
-           (outputs ""))
-       (for-each
-        (match-lambda
-          (('name n)
-           (set! name n))
-          (('connection conn)
-           (set! connection conn))
-          (('table-metadata? t-metadata?)
-           (set! table-metadata? t-metadata?))
-          (('prefixes p)
-           (set! prefixes p))
-          (('inputs i)
-           (set! inputs i))
-          (('outputs o)
-           (set! outputs o)))
-        (list (list 'key value) ...))
-       (let ((rdf-path (get-keyword-value outputs #:rdf ""))
-             (doc-path (get-keyword-value outputs #:documentation "")))
-         ;; Dumping the documentation first
-         (call-with-target-database
-          connection
-          (lambda (db)
-            (with-output-to-file        ;
-                doc-path
-              (lambda ()
-                (format #t "# ~a" name)
-                (for-each
-                 (lambda (proc)
-                   (proc db
-                         #:dump-metadata? #f
-                         #:dump-data? #f
-                         #:dump-documentation?
-                         (lambda () (for-each
-                                     (match-lambda
-                                       ((k v)
-                                        (begin
-                                          (prefix k v #f))))
-                                     prefixes))))
-                 inputs))
-              #:encoding "utf8")
-
-            ;; Dumping the actual data
-            (with-output-to-file
-                rdf-path
-              (lambda ()
-                ;; Add the prefixes
-                (for-each
-                 (match-lambda
-                   ((k v)
-                    (begin
-                      (prefix k v))))
-                 prefixes)
-                (newline)
-                (for-each
-                 (lambda (proc)
-                   (proc db #:dump-metadata? table-metadata?))
-                 inputs))
-              #:encoding "utf8"))))))))
+     (let* ((alist `((key . ,value) ...))
+            (name (assoc-ref alist 'name))
+            (connection (assoc-ref alist 'connection))
+            (table-metadata? (assoc-ref alist 'table-metadata?))
+            (prefixes (assoc-ref alist 'prefixes))
+            (inputs (assoc-ref alist 'inputs))
+            (outputs (assoc-ref alist 'outputs))
+            (rdf-path (get-keyword-value outputs #:rdf ""))
+            (doc-path (get-keyword-value outputs #:documentation "")))
+       (call-with-target-database
+        connection
+        (lambda (db)
+          (with-output-to-file        ;
+              doc-path
+            (lambda ()
+              (format #t "# ~a" name)
+              (for-each
+               (lambda (proc)
+                 (proc db
+                       #:dump-metadata? #f
+                       #:dump-data? #f
+                       #:dump-documentation?
+                       (lambda () (for-each
+                                   (match-lambda
+                                     ((k v)
+                                      (begin
+                                        (prefix k v #f))))
+                                   prefixes))))
+               inputs))
+            #:encoding "utf8")
+
+          ;; Dumping the actual data
+          (with-output-to-file
+              rdf-path
+            (lambda ()
+              ;; Add the prefixes
+              (for-each
+               (match-lambda
+                 ((k v)
+                  (begin
+                    (prefix k v))))
+               prefixes)
+              (newline)
+              (for-each
+               (lambda (proc)
+                 (proc db #:dump-metadata? table-metadata?))
+               inputs))
+            #:encoding "utf8")))))))
+