(use srfi-69 awful spiffy-request-vars spiffy intarweb uri-common html-tags) (page-template (lambda (contents . more) contents)) (page-exception-message (lambda (exn) (
 convert-to-entities?: #t
          (with-output-to-string
            (lambda ()
              (print-call-chain)
              (print-error-message exn))))))

(define (show var)
  (with-output-to-string (cut write var)))

(define-page "as-string" (lambda () (show ($ 'var))))

(define-page "as-symbol" (lambda () (show ($ 'var as-symbol))))

(define-page "as-number" (lambda () (show ($ 'var as-number))))

(define-page "as-boolean" (lambda () (show ($ 'var as-boolean))))

(define-page "as-list" (lambda () (show ($ 'var as-list))))

(define-page "as-vector" (lambda () (show ($ 'var as-vector))))

(define-page "as-alist" (lambda () (show ($ 'var as-alist))))

(define-page "as-hash-table"
  (lambda ()
    (show (and-let* ((var ($ 'var as-hash-table)))
            (hash-table->alist var)))))

(define-page "as-nonempty-string" (lambda () (show ($ 'var (nonempty as-string)))))

(define-page "as-nonempty-symbol" (lambda () (show ($ 'var (nonempty as-symbol)))))

(define-page "as-nonempty-number" (lambda () (show ($ 'var (nonempty as-number)))))


;;; with-request-vars
(define-page "wrv-as-string"
  (lambda ()
    (with-request-vars* $ (var)
        (show var))))

(define-page "wrv-as-symbol"
  (lambda ()
    (with-request-vars ((var as-symbol))
        (show var))))

(define-page "wrv-as-number"
  (lambda ()
    (with-request-vars ((var as-number))
        (show var))))

(define-page "wrv-as-boolean"
  (lambda ()
    (with-request-vars ((var as-boolean))
        (show var))))

(define-page "wrv-as-list"
  (lambda ()
    (with-request-vars ((var as-list))
        (show var))))

(define-page "wrv-as-vector"
  (lambda ()
    (with-request-vars ((var as-vector))
        (show var))))

(define-page "wrv-as-alist"
  (lambda ()
    (with-request-vars ((var as-alist))
        (show var))))

(define-page "wrv-as-hash-table"
  (lambda ()
    (with-request-vars ((var as-hash-table))
        (show (and var (hash-table->alist var))))))


;;; test1
(define-page "test1"
  (lambda ()
    (with-request-vars (foo (bar as-list) (baz 5))
        (show (list foo bar baz)))))


;;; test2
(define-page "test2"
  (lambda ()
    (with-request-vars* $ (foo (bar as-list) (baz 5))
      (show (list foo bar baz)))))


;;; test3
(define-page "test3"
  (lambda ()
    (with-request-vars ((foo as-alist) (bar as-number) (baz as-vector) (bool as-boolean))
      (show (list foo bar baz bool)))))


;;; test4
(define-page "test4"
  (lambda ()
    (with-request-vars* $ ((foo as-alist) (bar as-number) (baz as-vector) (bool as-boolean))
      (show (list foo bar baz bool)))))


;;; test5
(define-page "test5"
  (lambda ()
    (with-request-vars (foo bar baz)
      (show (list foo bar baz)))))


;;; test6
(define-page "test6"
  (lambda ()
    (with-request-vars* $ (foo bar baz)
      (show (list foo bar baz)))))


;;; test7 (POST)
(define-page "test7"
  (lambda ()
    (with-request-vars* $ (foo bar baz blah)
      (show (list foo bar baz blah))))
  method: 'POST)

;;; test8
(define-page "test8"
  (lambda ()
    (with-request-vars* (request-vars source: 'query-string) (foo bar baz blah)
      (show (list foo bar baz blah))))
  method: 'POST)

;;; test9
(define-page "test9"
  (lambda ()
    (with-request-vars* (request-vars source: 'request-body) (foo bar baz blah)
      (show (list foo bar baz blah))))
  method: 'POST)