Skip to content

Commit a42fa46

Browse files
committed
Refactor invalid-object-value errors
1 parent f1b977b commit a42fa46

File tree

2 files changed

+12
-3
lines changed

2 files changed

+12
-3
lines changed

srfi/json.scm

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,14 @@
66
json-error?
77
(reason json-error-reason))
88

9+
(define (written obj)
10+
(call-with-port (open-output-string)
11+
(lambda (out) (write obj out) (get-output-string out))))
12+
13+
(define (invalid-object-value obj)
14+
(raise (make-json-error
15+
(string-append "Invalid object value: " (written obj) "."))))
16+
917
(define (json-whitespace? char)
1018
(assume (char? char))
1119
(case char
@@ -326,7 +334,7 @@
326334
;; continue!
327335
(lambda (obj)
328336
(read-object-maybe-continue callback obj k)))))
329-
(else (raise (make-json-error "Invalid object value.")))))
337+
(else (invalid-object-value obj))))
330338

331339
(define (read-object-colon callback obj k)
332340
(if (eq? obj 'colon)
@@ -424,14 +432,14 @@
424432
type
425433
obj
426434
return))))))
427-
(else (raise (make-json-error "Invalid object value.")))))
435+
(else (invalid-object-value obj))))
428436
((json-value)
429437
(let ((value obj))
430438
(lambda (type obj) (read-object-maybe-key (cons (cons key value) out)
431439
type
432440
obj
433441
return))))
434-
(else (raise (make-json-error "Invalid object value")))))
442+
(else (invalid-object-value obj))))
435443

436444
(define (read-object-maybe-key out type obj return)
437445
(case type

srfi/json.sld

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
(scheme case-lambda)
1212
(scheme char)
1313
(scheme text)
14+
(scheme write)
1415
(check)
1516
(srfi 145)
1617
(srfi 151)

0 commit comments

Comments
 (0)