racket/collects/web-server/formlets/servlet.rkt

33 lines
911 B
Racket

#lang racket
(require web-server/servlet
web-server/private/xexpr
"lib.rkt")
(provide/contract
[send/formlet ((formlet*/c)
(#:wrap (pretty-xexpr/c . -> . response/c))
. ->* . any)])
(define (send/formlet f
#:wrap
[wrapper
(lambda (form-xexpr)
`(html (head (title "Form Entry"))
(body ,form-xexpr)))])
(formlet-process
f
(send/suspend
(lambda (k-url)
(wrapper
`(form ([action ,k-url])
,@(formlet-display f)))))))
(provide/contract
[embed-formlet (embed/url/c formlet*/c . -> . pretty-xexpr/c)])
(define (embed-formlet embed/url f)
`(form ([action ,(embed/url
(lambda (r)
(formlet-process f r)))])
,@(formlet-display f)))