correct handling of `valid-char?` for 6.0

pull/2/head
Matthew Butterick 10 years ago
parent e3508b0c54
commit 79d2daaaeb

@ -1,6 +1,21 @@
#lang racket/base #lang racket/base
(require sugar/define xml racket/match) (require sugar/define (prefix-in xml: xml) racket/match)
(provide (all-defined-out) valid-char? cdata? cdata xexpr->string xexpr?) (provide (all-defined-out) cdata? cdata xexpr->string xexpr?)
; Section 2.2 of XML 1.1
; (XML 1.0 is slightly different and more restrictive)
(define (valid-char? i)
(and (exact-nonnegative-integer? i)
(or (<= #x1 i #xD7FF)
(<= #xE000 i #xFFFD)
(<= #x10000 i #x10FFFF))))
(define (xexpr? x)
(or (txexpr? x) (xml:xexpr? x) (valid-char? x)))
(define cdata xml:cdata)
(define cdata? xml:cdata?)
(define xexpr->string xml:xexpr->string)
(define (txexpr-short? x) (define (txexpr-short? x)
(match x (match x

@ -68,6 +68,8 @@
(check-false (txexpr-elements? '("foo" "bar" ((key "value"))))) ; malformed (check-false (txexpr-elements? '("foo" "bar" ((key "value"))))) ; malformed
(check-true (txexpr? '(p))) (check-true (txexpr? '(p)))
(check-true (txexpr? '(div 2)))
(check-true (txexpr? '(div (div ((foo "bar")) 2))))
(check-true (txexpr? '(p "foo" "bar"))) (check-true (txexpr? '(p "foo" "bar")))
(check-true (txexpr? '(p ((key "value")) "foo" "bar"))) (check-true (txexpr? '(p ((key "value")) "foo" "bar")))
(check-true (txexpr? '(p 123))) ; content is a number (check-true (txexpr? '(p 123))) ; content is a number

Loading…
Cancel
Save