diff --git a/collects/tests/xml/test.rkt b/collects/tests/xml/test.rkt index cbf56eb0af..1fcf493387 100644 --- a/collects/tests/xml/test.rkt +++ b/collects/tests/xml/test.rkt @@ -550,6 +550,12 @@ END (test-suite "eliminate-whitespace" + (test-equal? "Defaults" + (with-output-to-string + (lambda () + (write-xml/content ((eliminate-whitespace) (read-xml/element (open-input-string "\n
Hey
")))))) + "\nHey
") + (test-eliminate-whitespace empty identity "\nHey
" "\nHey
") (test-eliminate-whitespace/exn empty not "\nHey
" "not allowed to contain text") (test-eliminate-whitespace/exn empty truer "\nHey
" "not allowed to contain text") diff --git a/collects/xml/private/space.rkt b/collects/xml/private/space.rkt index bb7932cc1d..0fc5f311f2 100644 --- a/collects/xml/private/space.rkt +++ b/collects/xml/private/space.rkt @@ -1,10 +1,11 @@ #lang racket (require "structures.rkt") (provide/contract - [eliminate-whitespace ((listof symbol?) (boolean? . -> . boolean?) . -> . (element? . -> . element?))]) + [eliminate-whitespace (() ((listof symbol?) (boolean? . -> . boolean?)) . ->* . (element? . -> . element?))]) ;; eliminate-whitespace : (listof Symbol) (Bool -> Bool) -> Element -> Element -(define (eliminate-whitespace special eliminate-special?) +(define (eliminate-whitespace [special empty] + [eliminate-special? (λ (x) x)]) (letrec ([blank-it (lambda (el) (let ([name (element-name el)] diff --git a/collects/xml/xml.scrbl b/collects/xml/xml.scrbl index 2c0de7194b..6413b1074a 100644 --- a/collects/xml/xml.scrbl +++ b/collects/xml/xml.scrbl @@ -269,8 +269,8 @@ Converts an @tech{X-expression} into a string containing XML.} Converts XML represented with a string into an @tech{X-expression}.} -@defproc[((eliminate-whitespace [tags (listof symbol?)] - [choose (boolean? . -> . boolean?)]) +@defproc[((eliminate-whitespace [tags (listof symbol?) empty] + [choose (boolean? . -> . boolean?) (λ (x) x)]) [elem element?]) element?]{