diff --git a/main.rkt b/main.rkt index d9ed10f..cfc154e 100644 --- a/main.rkt +++ b/main.rkt @@ -143,12 +143,12 @@ [else (error 'validate-txexpr (format "~v is not a list starting with a symbol" x))])) -(define+provide+safe (make-txexpr tag [attrs null] [elements null]) +(define+provide+safe (txexpr tag [attrs null] [elements null]) ((symbol?) (txexpr-attrs? txexpr-elements?) . ->* . txexpr?) (define result (cons tag (append (if (empty? attrs) empty (list attrs)) elements))) (if (txexpr? result) result - (error 'make-txexpr + (error 'txexpr (cond [(not (txexpr-tag? tag)) (format "This is not a txexpr-tag: ~v" tag)] @@ -158,6 +158,8 @@ (format "This is not a list of txexpr-elements: ~v" elements)] [else ""])))) +(define make-txexpr txexpr) +(provide+safe make-txexpr) (define+provide+safe (txexpr->values x) (txexpr? . -> . (values symbol? txexpr-attrs? txexpr-elements?)) diff --git a/scribblings/txexpr.scrbl b/scribblings/txexpr.scrbl index fe081db..e22c64f 100644 --- a/scribblings/txexpr.scrbl +++ b/scribblings/txexpr.scrbl @@ -271,7 +271,7 @@ Accessor functions for the individual pieces of a @racket[_txexpr]. ] @defproc[ -(make-txexpr +(txexpr [tag txexpr-tag?] [attrs txexpr-attrs? @empty] [elements txexpr-elements? @empty]) @@ -279,15 +279,24 @@ txexpr?] Assemble a @racket[_txexpr] from its parts. If you don't have attributes, but you do have elements, you'll need to pass @racket[empty] as the second argument. Note that unlike @racket[xml->xexpr], if the attribute list is empty, it's not included in the resulting expression. @examples[#:eval my-eval -(make-txexpr 'div) -(make-txexpr 'div '() '("Hello" (p "World"))) -(make-txexpr 'div '[[id "top"]]) -(make-txexpr 'div '[[id "top"]] '("Hello" (p "World"))) +(txexpr 'div) +(txexpr 'div '() '("Hello" (p "World"))) +(txexpr 'div '[[id "top"]]) +(txexpr 'div '[[id "top"]] '("Hello" (p "World"))) (define tx '(div [[id "top"]] "Hello" (p "World"))) -(make-txexpr (get-tag tx) +(txexpr (get-tag tx) (get-attrs tx) (get-elements tx)) ] +@defproc[ +(make-txexpr +[tag txexpr-tag?] +[attrs txexpr-attrs? @empty] +[elements txexpr-elements? @empty]) +txexpr?] +Alternate name for @racket[txexpr]. + + @defproc[ (can-be-txexpr-attrs? [v any/c]) diff --git a/tests.rkt b/tests.rkt index a4caf0c..57f20dd 100644 --- a/tests.rkt +++ b/tests.rkt @@ -77,6 +77,12 @@ (check-txexprs-equal? (make-txexpr 'p null '("foo" "bar")) '(p "foo" "bar")) (check-txexprs-equal? (make-txexpr 'p '((key "value")) (list "foo" "bar")) '(p ((key "value")) "foo" "bar")) + + (check-txexprs-equal? (txexpr 'p) '(p)) + (check-txexprs-equal? (txexpr 'p '((key "value"))) '(p ((key "value")))) + (check-txexprs-equal? (txexpr 'p null '("foo" "bar")) '(p "foo" "bar")) + (check-txexprs-equal? (txexpr 'p '((key "value")) (list "foo" "bar")) + '(p ((key "value")) "foo" "bar")) (check-equal? (values->list (txexpr->values '(p))) (values->list (values 'p null null)))