From 334e09f3388a74b5982138b57abb2021e12cf598 Mon Sep 17 00:00:00 2001 From: Robby Zambito Date: Wed, 15 Feb 2023 09:18:22 -0500 Subject: Add json DSL --- lib/zambyte/meta/json.sld | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/lib/zambyte/meta/json.sld b/lib/zambyte/meta/json.sld index 58479e8..b6e681d 100644 --- a/lib/zambyte/meta/json.sld +++ b/lib/zambyte/meta/json.sld @@ -1,6 +1,7 @@ (define-library (zambyte meta json) ;; portable - (export json-ref + (export json + json-ref json-value? json-key-not-found) @@ -26,6 +27,20 @@ (import (scheme base)) ;; portable (begin + (define-syntax json + (syntax-rules (object list null true false) + ((_ (object (key . value) ...)) + (json-object `(key . ,(json value)) ...)) + ((_ (list vs ...)) + (json-list (json vs) ...)) + ((_ null) json-null) + ((_ true) #t) + ((_ false) #f) + ((_ value) + (if (json-value? value) + value + (error "json: not a json value" value))))) + (define (json-ref json key . keys) (let ((ref (cond ((json-object? json) json-object-ref) ((json-list? json) json-list-ref) -- cgit