diff --git a/collects/web-server/formlets.ss b/collects/web-server/formlets.ss new file mode 100644 index 0000000000..c3ea043e1c --- /dev/null +++ b/collects/web-server/formlets.ss @@ -0,0 +1,7 @@ +#lang scheme +(require web-server/formlets/formlets + web-server/formlets/input + web-server/formlets/servlet) +(provide (all-from-out web-server/formlets/servlet) + (all-from-out web-server/formlets/input) + (all-from-out web-server/formlets/formlets)) \ No newline at end of file diff --git a/collects/web-server/formlets/date.ss b/collects/web-server/formlets/date.ss index b0cf781d38..4e70851997 100644 --- a/collects/web-server/formlets/date.ss +++ b/collects/web-server/formlets/date.ss @@ -1,5 +1,5 @@ #lang scheme -(require web-server/formlets/formlets) +(require web-server/formlets) (define-struct date (month day)) (define (date->xml d) @@ -54,8 +54,6 @@ (make-binding:form #"input_4" #"8")) #f "127.0.0.1" 80 "127.0.0.1")) -(require web-server/formlets/servlet) - (define (start request) (display-itinernary (send/formlet diff --git a/collects/web-server/formlets/formlets.ss b/collects/web-server/formlets/formlets.ss index 37b1ae40f0..dbd161e4f8 100644 --- a/collects/web-server/formlets/formlets.ss +++ b/collects/web-server/formlets/formlets.ss @@ -48,5 +48,7 @@ (cross (pure (match-lambda [#,(cross-of #'q) e])) #,(circ-of #'q)))])) -(provide (all-defined-out) - (all-from-out "lib.ss")) \ No newline at end of file +(provide formlet + formlet/c + formlet-display + formlet-process) \ No newline at end of file diff --git a/collects/web-server/formlets/input.ss b/collects/web-server/formlets/input.ss new file mode 100644 index 0000000000..9da96971af --- /dev/null +++ b/collects/web-server/formlets/input.ss @@ -0,0 +1,32 @@ +#lang scheme +(require web-server/private/request-structs + "lib.ss") + +(define (next-name i) + (values (format "input_~a" i) (add1 i))) +(define (input i) + (let-values ([(w i) (next-name i)]) + (values (list `(input ([name ,w]))) + (lambda (env) (bindings-assq (string->bytes/utf-8 w) env)) + i))) + +(define input-string + (cross + (pure (lambda (bf) + (bytes->string/utf-8 (binding:form-value bf)))) + input)) + +(define input-int + (cross + (pure string->number) + input-string)) + +(define input-symbol + (cross + (pure string->symbol) + input-string)) + +(provide/contract + [input-string (formlet/c string?)] + [input-int (formlet/c integer?)] + [input-symbol (formlet/c symbol?)]) \ No newline at end of file diff --git a/collects/web-server/formlets/lib.ss b/collects/web-server/formlets/lib.ss index 9a02a843fa..5eaab14a18 100644 --- a/collects/web-server/formlets/lib.ss +++ b/collects/web-server/formlets/lib.ss @@ -58,14 +58,6 @@ (let-values ([(x p i) (f i)]) (values (list (list* t ats x)) p i)))) -(define (next-name i) - (values (format "input_~a" i) (add1 i))) -(define (input i) - (let-values ([(w i) (next-name i)]) - (values (list `(input ([name ,w]))) - (lambda (env) (bindings-assq (string->bytes/utf-8 w) env)) - i))) - ; Helpers (define (formlet-display f) (let-values ([(x p i) (f 0)]) @@ -75,23 +67,6 @@ (let-values ([(x p i) (f 0)]) (p (request-bindings/raw r)))) -; Input Formlets -(define input-string - (cross - (pure (lambda (bf) - (bytes->string/utf-8 (binding:form-value bf)))) - input)) - -(define input-int - (cross - (pure string->number) - input-string)) - -(define input-symbol - (cross - (pure string->symbol) - input-string)) - ; Contracts (define xexpr-forest/c (listof xexpr?)) @@ -119,8 +94,5 @@ [xml-forest (xexpr-forest/c . -> . (formlet/c procedure?))] [text (string? . -> . (formlet/c procedure?))] [tag-xexpr (symbol? (listof (list/c symbol? string?)) (formlet/c alpha) . -> . (formlet/c alpha))] - [input-string (formlet/c string?)] - [input-int (formlet/c integer?)] - [input-symbol (formlet/c symbol?)] [formlet-display ((formlet/c alpha) . -> . xexpr-forest/c)] [formlet-process ((formlet/c alpha) request? . -> . alpha)]) \ No newline at end of file