Adding #lang web-server/base

This commit is contained in:
Jay McCarthy 2012-03-16 11:53:49 -06:00
parent a55029cf76
commit 145efa622e
7 changed files with 101 additions and 57 deletions

View File

@ -88,6 +88,12 @@
mkd
"add02.rkt - s/s/u, uri"
(build-path example-servlets "add02.rkt"))
(test-add-two-numbers
mkd
"add02-base.rkt - s/s/u, uri"
(build-path example-servlets "add02-base.rkt"))
; XXX Use kont
#;(test-add-two-numbers

View File

@ -0,0 +1,2 @@
#lang s-exp syntax/module-reader
web-server/lang/base

View File

@ -0,0 +1,32 @@
#lang web-server/base
(require web-server/http
web-server/lang/web
net/url)
(define interface-version 'stateless)
(provide start interface-version)
;; get-number-from-user: string -> number
;; ask the user for a number
(define (gn msg)
(let ([req
(send/suspend/url
(lambda (k-url)
(response/xexpr
`(html (head (title ,(format "Get ~a number" msg)))
(body
(form ([action ,(url->string k-url)]
[method "get"]
[enctype "application/x-www-form-urlencoded"])
,(format "Enter the ~a number to add: " msg)
(input ([type "text"] [name "number"] [value ""]))
(input ([type "submit"]))))))))])
(string->number
(cdr (assoc 'number (url-query (request-uri req)))))))
(define (start initial-request)
(response/xexpr
`(html (head (title "Final Page"))
(body
(h1 "Final Page")
(p ,(format "The answer is ~a"
(+ (gn "first") (gn "second"))))))))

View File

@ -1,26 +1,19 @@
#lang racket/base
(require (for-syntax racket/base)
(for-syntax racket/list)
(for-syntax "lang/labels.rkt")
(for-syntax "lang/util.rkt")
(for-syntax "lang/elim-letrec.rkt")
(for-syntax "lang/anormal.rkt")
(for-syntax "lang/elim-callcc.rkt")
(for-syntax "lang/defun.rkt")
"lang/lang-api.rkt")
#lang racket
(define-syntax-rule (reqpro m ...)
(begin (require m ...)
(provide (all-from-out m ...))))
(provide (all-from-out racket))
(reqpro web-server/lang/base
net/url
web-server/http
web-server/http/bindings
web-server/dispatch
web-server/stuffers
web-server/lang/abort-resume
web-server/lang/web
web-server/lang/native
web-server/lang/web-cells
web-server/lang/web-param
web-server/lang/file-box
web-server/lang/soft)
(provide (rename-out [lang-module-begin #%module-begin])
(all-from-out "lang/lang-api.rkt"))
(define-for-syntax anormalize (make-anormal-term elim-letrec-term))
(define-syntax lang-module-begin
(make-lang-module-begin
make-labeling
(make-module-case
(make-define-case
(lambda (stx)
(define anf-stx (anormalize stx))
(define no-callcc-stx (elim-callcc anf-stx))
(define defun-stx (defun no-callcc-stx))
defun-stx)))))

View File

@ -0,0 +1,26 @@
#lang racket/base
(require (for-syntax racket/base)
(for-syntax racket/list)
(for-syntax "labels.rkt")
(for-syntax "util.rkt")
(for-syntax "elim-letrec.rkt")
(for-syntax "anormal.rkt")
(for-syntax "elim-callcc.rkt")
(for-syntax "defun.rkt")
"lang-api.rkt")
(provide (rename-out [lang-module-begin #%module-begin])
(all-from-out "lang-api.rkt"))
(define-for-syntax anormalize (make-anormal-term elim-letrec-term))
(define-syntax lang-module-begin
(make-lang-module-begin
make-labeling
(make-module-case
(make-define-case
(lambda (stx)
(define anf-stx (anormalize stx))
(define no-callcc-stx (elim-callcc anf-stx))
(define defun-stx (defun no-callcc-stx))
defun-stx)))))

View File

@ -1,26 +1,2 @@
#lang racket
(require net/url
web-server/http
web-server/http/bindings
web-server/dispatch
web-server/stuffers
web-server/lang/abort-resume
web-server/lang/web
web-server/lang/native
web-server/lang/web-cells
web-server/lang/web-param
web-server/lang/file-box
web-server/lang/soft)
(provide (except-out (all-from-out racket) #%module-begin)
(all-from-out net/url
web-server/http
web-server/http/bindings
web-server/dispatch
web-server/stuffers
web-server/lang/abort-resume
web-server/lang/web
web-server/lang/native
web-server/lang/web-cells
web-server/lang/web-param
web-server/lang/file-box
web-server/lang/soft))
#lang racket/base
(provide (except-out (all-from-out racket/base) #%module-begin))

View File

@ -3,7 +3,7 @@
@title[#:tag "stateless"]{Stateless Servlets}
@defmodulelang[web-server]
@defmodulelang*[(web-server/base web-server)]
@section[#:style 'hidden #:tag "stateless-example"]{Example}
@ -54,14 +54,23 @@ An example @racket['stateless] servlet module:
`(html (body (h2 "Look ma, no state!")))))
]
The @racketmodname[web-server/base] language exports all of the functions
and syntax from @racketmodname[racket/base] and nothing else.
These servlets have an extensive API available to them: @racketmodname[racket], @racketmodname[net/url], @racketmodname[web-server/http],
The @racketmodname[web-server] language exports all of the functions
and syntax from the following libraries: @racketmodname[racket],
@racketmodname[net/url], @racketmodname[web-server/http],
@racketmodname[web-server/http/bindings],
@racketmodname[web-server/lang/abort-resume], @racketmodname[web-server/lang/web], @racketmodname[web-server/lang/native],
@racketmodname[web-server/lang/abort-resume],
@racketmodname[web-server/lang/web],
@racketmodname[web-server/lang/native],
@racketmodname[web-server/lang/web-param],
@racketmodname[web-server/lang/web-cells], @racketmodname[web-server/lang/file-box], @racketmodname[web-server/lang/soft], @racketmodname[web-server/dispatch], and
@racketmodname[web-server/stuffers].
Some of these are documented in the subsections that follow.
@racketmodname[web-server/lang/web-cells],
@racketmodname[web-server/lang/file-box],
@racketmodname[web-server/lang/soft],
@racketmodname[web-server/dispatch], and
@racketmodname[web-server/stuffers]. Some of these are documented in
the subsections that follow.
@include-section["stateless-usage.scrbl"]
@include-section["serial.scrbl"]