New examples
svn: r11460
This commit is contained in:
parent
776dfd7352
commit
7ca029e13d
|
@ -24,5 +24,5 @@
|
|||
(define (start initial-request)
|
||||
`(html (head (title "Sum"))
|
||||
(body ([bgcolor "white"])
|
||||
(p "The sum is "
|
||||
(p "The answer is "
|
||||
,(number->string (+ (request-number "first") (request-number "second")))))))
|
||||
|
|
|
@ -28,5 +28,5 @@
|
|||
(define (start initial-request)
|
||||
`(html (head (title "Sum"))
|
||||
(body ([bgcolor "white"])
|
||||
(p "The sum is "
|
||||
(p "The answer is "
|
||||
,(number->string (+ (request-number "first") (request-number "second")))))))
|
||||
|
|
|
@ -24,5 +24,5 @@
|
|||
(define (start initial-request)
|
||||
`(html (head (title "Sum"))
|
||||
(body ([bgcolor "white"])
|
||||
(p "The sum is "
|
||||
(p "The answer is "
|
||||
,(number->string (+ (request-number "first") (request-number "second")))))))
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
#lang scheme
|
||||
(require web-server/servlet)
|
||||
(define interface-version 'v1)
|
||||
(define timeout +inf.0)
|
||||
(provide start interface-version timeout)
|
||||
|
||||
(define (start initial-request)
|
||||
(define counter1 0)
|
||||
(define counter2 0)
|
||||
(send/suspend/dispatch
|
||||
(lambda (embed/url)
|
||||
(let*-values ([(inc1 next-counter1 next-counter2) (include-counter counter1 counter2 embed/url)]
|
||||
[(inc2 next-counter2 next-counter1) (include-counter next-counter2 next-counter1 embed/url)])
|
||||
`(html
|
||||
(body (h2 "Web Cell Test")
|
||||
(div (h3 "First") ,(inc1 next-counter1 next-counter2))
|
||||
(div (h3 "Second") ,(inc2 next-counter2 next-counter1))))))))
|
||||
|
||||
(define (include-counter my-counter other-counter embed/url)
|
||||
(let/cc k
|
||||
(letrec ([include
|
||||
(lambda (next-my-counter next-other-counter)
|
||||
`(div (h3 ,(number->string next-my-counter))
|
||||
(a ([href
|
||||
,(embed/url
|
||||
(lambda _
|
||||
(k include
|
||||
(add1 next-my-counter)
|
||||
next-other-counter)))])
|
||||
"Increment")))])
|
||||
(values include
|
||||
my-counter
|
||||
other-counter))))
|
43
collects/web-server/default-web-root/servlets/examples/wc.ss
Normal file
43
collects/web-server/default-web-root/servlets/examples/wc.ss
Normal file
|
@ -0,0 +1,43 @@
|
|||
#lang scheme
|
||||
(require web-server/servlet)
|
||||
(define interface-version 'v1)
|
||||
(define timeout +inf.0)
|
||||
(provide start interface-version timeout)
|
||||
|
||||
(define (start initial-request)
|
||||
; A top-level frame must exist
|
||||
(define counter1 (make-counter))
|
||||
(define counter2 (make-counter))
|
||||
; counter1 and counter2 must have been added to the top-level frame
|
||||
(define include1 (include-counter counter1))
|
||||
(define include2 (include-counter counter2))
|
||||
; counter1 and counter2 may have been modified
|
||||
(send/suspend/dispatch
|
||||
(lambda (embed/url)
|
||||
; The frame (ref) must have been captured, any changes to web-cells after this will be lost
|
||||
`(html
|
||||
(body (h2 "Web Cell Test")
|
||||
(div (h3 "First")
|
||||
,(include1 embed/url))
|
||||
(div (h3 "Second")
|
||||
,(include2 embed/url)))))))
|
||||
|
||||
(define (make-counter)
|
||||
(make-web-cell 0))
|
||||
|
||||
(define (include-counter a-counter)
|
||||
(let/cc k
|
||||
(define (generate)
|
||||
(k
|
||||
(lambda (embed/url)
|
||||
`(div (h3 ,(number->string (web-cell-ref a-counter)))
|
||||
(a ([href ,(embed/url
|
||||
(lambda _
|
||||
; A new frame has been created
|
||||
(define last (web-cell-ref a-counter))
|
||||
; It is a child of the parent frame, so we can inspect the value
|
||||
(web-cell-shadow a-counter (add1 last))
|
||||
; The new frame has been modified
|
||||
(generate)))])
|
||||
"+")))))
|
||||
(generate)))
|
Loading…
Reference in New Issue
Block a user