;;; File: ;;; colorful.ss ;;; Version: ;;; 1.0 of 11 February 2003 ;;; Author: ;;; Samuel A. Rebelsky ;;; Contents: ;;; A simple example of some Scheme procedures for CGI. ;;; Organization: ;;; Preparation - Stuff I need to do to get started ;;; Page Generators - Procedures for generating specific kinds of ;;; pages (when given particular values) ;;; Interface - Stuff to extract important values and then ;;; call the page generators. You'll find (page) here. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Preparation ;;; Look! We're going to use Sam's CGI library. What fun. (load "/home/rebelsky/Web/Scheme/webutils.ss") ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Page Generators ;;; Procedure ;;; colorful-page ;;; Parameters: ;;; name, a string ;;; Purpose: ;;; Generates an HTML page that can greet the named person. ;;; Produces: ;;; A string that corresponds to that page. ;;; Preconditions: ;;; The string must be nonempty. ;;; Postconditions: ;;; The returned page is valid HTML. (define colorful-page (lambda (color) (make-page (head "color" (string-append "\n")) (body (string-append (heading 1 color) (string #\newline) (paragraph (string-append "'Twas brillig and the slithy toves did " "gyre and bimble in the wabe. " "All mimsy were the borogoves " "and the mome raths outgrabe.")) (paragraph (string-append "\"Beware the Jabberwock, my son, " "the jaws that bite, the claws that catch. " "Beware the jubjub bird " "and shun the frumious bandersnatch.\""))))))) ;;; Procedure ;;; colorful-form ;;; Parameters: ;;; [None] ;;; Purpose: ;;; Generates an HTML page for an input form for this CGI script. ;;; Produces: ;;; A string that corresponds to that page. ;;; Preconditions: ;;; [None] ;;; Postconditions: ;;; The returned page is valid HTML. (define colorful-form (lambda () (make-page (head "Enter Your Favorite Color") (body (form "colorful.cgi" "Select your favorite color and click me!" (string-append "")))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Interface ;;; Procedure: ;;; page ;;; Parameters: ;;; None ;;; Purpose: ;;; Builds an HTML page according to specifications. ;;; Produces: ;;; A string that corresponds to the HTML page. ;;; Preconditions: ;;; [None] ;;; Postconditions: ;;; Returns HTML for a valid page. (define page (lambda () (page-helper (get-cgi-variable 'color "")))) (define page-helper (lambda (color) (if (string=? color "") ; Default value indicates no param (colorful-form) (colorful-page color))))