diff options
Diffstat (limited to 'lib/zambyte/meta/gauche.scm')
-rw-r--r-- | lib/zambyte/meta/gauche.scm | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/lib/zambyte/meta/gauche.scm b/lib/zambyte/meta/gauche.scm new file mode 100644 index 0000000..733599a --- /dev/null +++ b/lib/zambyte/meta/gauche.scm @@ -0,0 +1,32 @@ +(import (gauche base) + (rfc json) + (srfi 1)) +(begin + (define array-handler list->vector) + (define object-handler identity) + (define (special-handler x) + (case x + ((true) #t) + ((false) #f) + (else => identity))) + + (define (string->json str) + (parameterize ((json-array-handler array-handler) + (json-object-handler object-handler) + (json-special-handler special-handler)) + (parse-json-string str))) + + (define json->string construct-json-string) + (define json-object list) + (define json-list vector) + (define json-null 'null) + (define json-object? list?) + (define json-list? vector?) + + (define (json-null? obj) + (eq? obj json-null)) + + (define json-object-ref assoc-ref) + (define json-list-ref vector-ref) + (define json-object->alist identity) + (define json-list->list vector->list)) |