42 lines
1.2 KiB
Racket
42 lines
1.2 KiB
Racket
#lang racket/base
|
|
(require scribble/manual
|
|
scribble/eval
|
|
(for-syntax racket/base)
|
|
(for-label racket/base
|
|
racket/contract
|
|
racket/unit))
|
|
|
|
(define web-server "Web Server")
|
|
|
|
(define (warning . x)
|
|
(apply elem (bold "Warning: ") x))
|
|
|
|
(define (href-link url label)
|
|
(link url label))
|
|
|
|
(define-syntax (a-dispatcher stx)
|
|
(syntax-case stx ()
|
|
[(_ lib-name lib-desc . rest)
|
|
;; This macro plays a standard trick for limiting the scope of
|
|
;; `require'd bindings: it puts the require and the scope of the
|
|
;; require into a macro, which introduces both together
|
|
#'(begin
|
|
(define-syntax-rule (intro)
|
|
((... ...)
|
|
(begin
|
|
(require (for-label lib-name))
|
|
(defmodule lib-name
|
|
"The " (racketmodname lib-name) " module " lib-desc)
|
|
. rest)))
|
|
(intro))]))
|
|
|
|
(provide (all-from-out scribble/manual)
|
|
(all-from-out scribble/eval)
|
|
(for-label (all-from-out racket/base
|
|
racket/contract
|
|
racket/unit))
|
|
a-dispatcher
|
|
web-server
|
|
warning
|
|
href-link)
|