diff --git a/collects/web-server/default-web-root/servlets/examples/add-ssd.ss b/collects/web-server/default-web-root/servlets/examples/add-ssd.ss index 9e08ddad9f..d4dfe4df69 100644 --- a/collects/web-server/default-web-root/servlets/examples/add-ssd.ss +++ b/collects/web-server/default-web-root/servlets/examples/add-ssd.ss @@ -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"))))))) diff --git a/collects/web-server/default-web-root/servlets/examples/add-v2.ss b/collects/web-server/default-web-root/servlets/examples/add-v2.ss index 14944d6eea..fb55e9fb93 100644 --- a/collects/web-server/default-web-root/servlets/examples/add-v2.ss +++ b/collects/web-server/default-web-root/servlets/examples/add-v2.ss @@ -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"))))))) diff --git a/collects/web-server/default-web-root/servlets/examples/add.ss b/collects/web-server/default-web-root/servlets/examples/add.ss index 9c5474421c..acf531c9f6 100644 --- a/collects/web-server/default-web-root/servlets/examples/add.ss +++ b/collects/web-server/default-web-root/servlets/examples/add.ss @@ -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"))))))) diff --git a/collects/web-server/default-web-root/servlets/examples/wc-fake.ss b/collects/web-server/default-web-root/servlets/examples/wc-fake.ss new file mode 100644 index 0000000000..22140caf5b --- /dev/null +++ b/collects/web-server/default-web-root/servlets/examples/wc-fake.ss @@ -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)))) diff --git a/collects/web-server/default-web-root/servlets/examples/wc.ss b/collects/web-server/default-web-root/servlets/examples/wc.ss new file mode 100644 index 0000000000..eadf948870 --- /dev/null +++ b/collects/web-server/default-web-root/servlets/examples/wc.ss @@ -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)))