about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ravanan/reader.scm11
1 files changed, 11 insertions, 0 deletions
diff --git a/ravanan/reader.scm b/ravanan/reader.scm
index 731ed92..8b8ac50 100644
--- a/ravanan/reader.scm
+++ b/ravanan/reader.scm
@@ -17,6 +17,8 @@
 ;;; along with ravanan.  If not, see <https://www.gnu.org/licenses/>.
 
 (define-module (ravanan reader)
+  #:use-module (rnrs conditions)
+  #:use-module (rnrs exceptions)
   #:use-module (rnrs io ports)
   #:use-module (srfi srfi-26)
   #:use-module (ice-9 filesystem)
@@ -310,3 +312,12 @@ array of array of @code{File}s, etc. Else, return @code{#f}"
          val
          (string->number val)))
     (else val)))
+
+(define (read-json-file file)
+  "Read JSON @var{file} and return scheme tree."
+  (guard (c (else
+             (raise-exception
+              (condition (make-who-condition 'read-json-file)
+                         c))))
+    (call-with-input-file file
+      json->scm)))