about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ravanan/reader.scm15
1 files changed, 14 insertions, 1 deletions
diff --git a/ravanan/reader.scm b/ravanan/reader.scm
index 0117007..bf8d8aa 100644
--- a/ravanan/reader.scm
+++ b/ravanan/reader.scm
@@ -24,7 +24,7 @@
   #:use-module (ice-9 filesystem)
   #:use-module (ice-9 match)
   #:use-module (json)
-  #:use-module (yaml)
+  #:use-module ((yaml) #:prefix yaml:)
   #:use-module (ravanan work command-line-tool)
   #:use-module (ravanan work monads)
   #:use-module (ravanan work types)
@@ -320,3 +320,16 @@ array of array of @code{File}s, etc. Else, return @code{#f}"
                          c))))
     (call-with-input-file file
       json->scm)))
+
+(define (read-yaml-file file)
+  "Read YAML @var{file} and return scheme tree."
+  (guard (c ((and (message-condition? c)
+                  (string-prefix? "read-yaml-file:" (condition-message c)))
+             (raise-exception
+              (condition (make-who-condition 'read-yaml-file)
+                         (make-irritants-condition
+                          (match (string-split (condition-message c) #\:)
+                            ((_ message file)
+                             (list (string-trim message)
+                                   (string-trim file)))))))))
+    (yaml:read-yaml-file file)))