From 98865301aebfe704dbaa4cb0790972c019c798ca Mon Sep 17 00:00:00 2001
From: Munyoki Kilyungi
Date: Mon, 27 Mar 2023 22:54:44 +0300
Subject: Use match syntax to print object correctly during dump

Signed-off-by: Munyoki Kilyungi <me@bonfacemunyoki.com>
---
 dump/triples.scm | 21 +++++++++++----------
 1 file changed, 11 insertions(+), 10 deletions(-)

diff --git a/dump/triples.scm b/dump/triples.scm
index 6ccf137..1f2ab87 100644
--- a/dump/triples.scm
+++ b/dump/triples.scm
@@ -1,4 +1,5 @@
 (define-module (dump triples)
+  #:use-module (ice-9 regex)
   #:use-module (ice-9 match)
   #:use-module (dump utils)
   #:export (ontology
@@ -40,16 +41,16 @@ characters with an underscore and prefixing with gn:PREFIX."
               (number? object))
     (error "Triple object not a string, symbol or number:"
            (list subject predicate object)))
-  (let ([format-string
-         (if (symbol? object)
-             "~a ~a ~a .~%" "~a ~a ~s .~%")]
-        [object
-         (if (and (symbol? object)
-                  (string-contains (symbol->string object)
-                                   "\""))
-             (symbol->string object)
-             object)])
-    (format #t format-string subject predicate object)))
+  (match object
+    ((and (?  string? object)
+          (?  (lambda (el) (string-match "^\\[ .* \\]$" object))))
+     (format #t "~a ~a ~a .~%" subject predicate object))
+    ((?  symbol? object)
+     (format #t "~a ~a ~a .~%" subject predicate object))
+    ((or (?  string? object)
+         (?  number? object))
+     (format #t "~a ~a ~s .~%" subject predicate object))
+    (_ (error "Trible object must be a string, symbol, number or blank node"))))
 
 (define (scm->triples alist id)
   (for-each (match-lambda
-- 
cgit v1.2.3