Updated contracts in XML collection.

svn: r17720
This commit is contained in:
Carl Eastlund 2010-01-18 18:49:39 +00:00
parent 6ac7fe78e6
commit 2a5f883a4c
2 changed files with 30 additions and 28 deletions

View File

@ -58,15 +58,18 @@
(define permissive-xexprs (make-parameter #f)) (define permissive-xexprs (make-parameter #f))
(define permissive/c (define permissive/c
(make-proj-contract 'permissive/c (simple-flat-contract
(lambda (pos neg src-info name) #:name 'permissive/c
(lambda (v) #:projection
(if (permissive-xexprs) (lambda (blame)
v (lambda (v)
(raise-contract-error (if (permissive-xexprs)
v src-info pos name "not in permissive mode")))) v
(lambda (v) (raise-blame-error
(permissive-xexprs)))) blame v "not in permissive mode"))))
#:first-order
(lambda (v)
(permissive-xexprs))))
; content? : TST -> Bool ; content? : TST -> Bool
(define content/c (define content/c

View File

@ -33,31 +33,30 @@
(or/c (cons/c (listof (list/c symbol? string?)) (listof xexpr)) (or/c (cons/c (listof (list/c symbol? string?)) (listof xexpr))
(listof xexpr))))) (listof xexpr)))))
(define xexpr/c
(make-proj-contract
'xexpr?
(lambda (pos neg src-info name)
(lambda (val)
(with-handlers ([exn:invalid-xexpr?
(lambda (exn)
(raise-contract-error
val
src-info
pos
name
"Not an Xexpr. ~a~n~nContext:~n~a"
(exn-message exn)
(pretty-format val)))])
(validate-xexpr val)
val)))
(lambda (v) #t)))
(define (xexpr? x) (define (xexpr? x)
(correct-xexpr? x (lambda () #t) (lambda (exn) #f))) (correct-xexpr? x (lambda () #t) (lambda (exn) #f)))
(define (validate-xexpr x) (define (validate-xexpr x)
(correct-xexpr? x (lambda () #t) (lambda (exn) (raise exn)))) (correct-xexpr? x (lambda () #t) (lambda (exn) (raise exn))))
(define xexpr/c
(simple-flat-contract
#:name 'xexpr?
#:projection
(lambda (blame)
(lambda (val)
(with-handlers ([exn:invalid-xexpr?
(lambda (exn)
(raise-blame-error
blame
val
"Not an Xexpr. ~a~n~nContext:~n~a"
(exn-message exn)
(pretty-format val)))])
(validate-xexpr val)
val)))
#:first-order xexpr?))
;; ;; ;; ;; ;; ;; ; ;; ;; ;; ;; ;; ;; ;
;; ; xexpr? helpers ;; ; xexpr? helpers