add htdp/image, htdp/world defmodule to teachpack docs; minor Scribble extensions
svn: r13877 original commit: 2c71266d96368600f579d6f4431e82fb5a6af3f5
This commit is contained in:
parent
ebabd8d9f9
commit
1b4c0c027c
|
@ -17,24 +17,37 @@
|
|||
|
||||
(define spacer (hspace 1))
|
||||
|
||||
(define-syntax-rule (defmodule*/no-declare (name ...) . content)
|
||||
(*defmodule (list (schememodname name) ...)
|
||||
#f
|
||||
(list . content)))
|
||||
(define-syntax defmodule*/no-declare
|
||||
(syntax-rules ()
|
||||
[(_ #:require-form req (name ...) . content)
|
||||
(*defmodule (list (schememodname name) ...)
|
||||
#f
|
||||
(list . content)
|
||||
req)]
|
||||
[(_ (name ...) . content)
|
||||
(defmodule*/no-declare #:require-form (scheme require) (name ...) . content)]))
|
||||
|
||||
(define-syntax defmodule*
|
||||
(syntax-rules ()
|
||||
[(_ (name ...) #:use-sources (pname ...) . content)
|
||||
[(_ #:require-form req (name ...) #:use-sources (pname ...) . content)
|
||||
(begin (declare-exporting name ... #:use-sources (pname ...))
|
||||
(defmodule*/no-declare (name ...) . content))]
|
||||
(defmodule*/no-declare #:require-form req (name ...) . content))]
|
||||
[(_ #:require-form req (name ...) . content)
|
||||
(defmodule* #:require-form req (name ...) #:use-sources () . content)]
|
||||
[(_ (name ...) #:use-sources (pname ...) . content)
|
||||
(defmodule* #:require-form (scheme require) (name ...) #:use-sources (pname ...) . content)]
|
||||
[(_ (name ...) . content)
|
||||
(defmodule* (name ...) #:use-sources () . content)]))
|
||||
|
||||
(define-syntax-rule (defmodule name . content)
|
||||
(defmodule* (name) . content))
|
||||
(define-syntax defmodule
|
||||
(syntax-rules ()
|
||||
[(_ #:require-form req name . content)
|
||||
(defmodule* #:require-form req (name) . content)]
|
||||
[(_ name . content)
|
||||
(defmodule* (name) . content)]))
|
||||
|
||||
(define-syntax-rule (defmodulelang*/no-declare (lang ...) . content)
|
||||
(*defmodule (list (schememodname lang) ...) #t (list . content)))
|
||||
(*defmodule (list (schememodname lang) ...) #t (list . content) #f))
|
||||
|
||||
(define-syntax defmodulelang*
|
||||
(syntax-rules ()
|
||||
|
@ -48,7 +61,7 @@
|
|||
(defmodulelang* (lang) . content))
|
||||
|
||||
(define-syntax-rule (defmodulereader*/no-declare (lang ...) . content)
|
||||
(*defmodule (list (schememodname lang) ...) 'reader (list . content)))
|
||||
(*defmodule (list (schememodname lang) ...) 'reader (list . content) #f))
|
||||
|
||||
(define-syntax defmodulereader*
|
||||
(syntax-rules ()
|
||||
|
@ -61,7 +74,7 @@
|
|||
(define-syntax-rule (defmodulereader lang . content)
|
||||
(defmodulereader* (lang) . content))
|
||||
|
||||
(define (*defmodule names lang content)
|
||||
(define (*defmodule names lang content req)
|
||||
(make-splice
|
||||
(cons
|
||||
(make-table
|
||||
|
@ -78,7 +91,7 @@
|
|||
(if (eq? lang 'reader)
|
||||
(list (schememetafont "#reader") spacer (make-defschememodname name))
|
||||
(list (hash-lang) spacer (make-defschememodname name)))
|
||||
(list (scheme (require #,(make-defschememodname name)))))))))))
|
||||
(list (scheme (#,req #,(make-defschememodname name)))))))))))
|
||||
names))
|
||||
(append (map (lambda (name)
|
||||
(make-part-tag-decl `(mod-path ,(element->string name))))
|
||||
|
|
|
@ -96,8 +96,13 @@
|
|||
(define-code schemeid to-element/id unsyntax keep-s-expr add-sq-prop)
|
||||
(define-code *schememodname to-element unsyntax keep-s-expr add-sq-prop)
|
||||
|
||||
(define-syntax-rule (schememodname n)
|
||||
(as-modname-link 'n (*schememodname n)))
|
||||
(define-syntax schememodname
|
||||
(syntax-rules (unsyntax)
|
||||
[(schememodname #,n)
|
||||
(let ([sym n])
|
||||
(as-modname-link sym (to-element sym)))]
|
||||
[(schememodname n)
|
||||
(as-modname-link 'n (*schememodname n))]))
|
||||
|
||||
(define (as-modname-link s e)
|
||||
(if (symbol? s)
|
||||
|
|
|
@ -141,8 +141,10 @@ as a REPL value (i.e., a single color with no hyperlinks).}
|
|||
@defform[(schemeid datum ...)]{Like @scheme[scheme], but typeset
|
||||
as an unbound identifier (i.e., no coloring or hyperlinks).}
|
||||
|
||||
@defform[(schememodname datum)]{Like @scheme[scheme], but typeset as a
|
||||
module path. If @scheme[datum] is an identifier, then it is
|
||||
@defform*[((schememodname datum)
|
||||
(schememodname ((unsyntax (scheme unsyntax)) expr)))]{
|
||||
Like @scheme[scheme], but typeset as a module path. If @scheme[datum]
|
||||
is an identifier or @scheme[expr] produces a symbol, then it is
|
||||
hyperlinked to the module path's definition as created by
|
||||
@scheme[defmodule].}
|
||||
|
||||
|
@ -246,8 +248,10 @@ because the @"@"-reader would drop comments within the
|
|||
@; ------------------------------------------------------------------------
|
||||
@section[#:tag "doc-modules"]{Documenting Modules}
|
||||
|
||||
@defform/subs[(defmodule id maybe-sources pre-flow ...)
|
||||
([maybe-sources code:blank
|
||||
@defform/subs[(defmodule maybe-req id maybe-sources pre-flow ...)
|
||||
([maybe-req code:blank
|
||||
(code:line #:require-form expr)]
|
||||
[maybe-sources code:blank
|
||||
(code:line #:use-sources (mod-path ...))])]{
|
||||
|
||||
Produces a sequence of flow elements (encaptured in a @scheme[splice])
|
||||
|
@ -262,6 +266,11 @@ Besides generating text, this form expands to a use of
|
|||
used at most once in a section, though it can be shadowed with
|
||||
@scheme[defmodule]s in sub-sections.
|
||||
|
||||
If a @scheme[#:require-form] clause is provided, the given expression
|
||||
produces an element to use instead of @scheme[(scheme require)] for
|
||||
the declaration of the module. This is useful to suggest a different
|
||||
way of accessing the module instead of through @scheme[require].
|
||||
|
||||
Hyperlinks created by @scheme[schememodname] are associated with the
|
||||
enclosing section, rather than the local @scheme[id] text.}
|
||||
|
||||
|
@ -279,7 +288,7 @@ suitable for use with @schememetafont{#reader}.}
|
|||
|
||||
|
||||
@deftogether[(
|
||||
@defform[(defmodule* (id ...+) maybe-sources pre-flow ...)]
|
||||
@defform[(defmodule* maybe-req (id ...+) maybe-sources pre-flow ...)]
|
||||
@defform[(defmodulelang* (id ...+) maybe-sources pre-flow ...)]
|
||||
@defform[(defmodulereader* (id ...+) maybe-sources pre-flow ...)]
|
||||
)]{
|
||||
|
@ -288,7 +297,7 @@ Like @scheme[defmodule], etc., but introduces multiple module paths instead
|
|||
of just one.}
|
||||
|
||||
@deftogether[(
|
||||
@defform[(defmodule*/no-declare (id ...) pre-flow ...)]
|
||||
@defform[(defmodule*/no-declare maybe-req (id ...) pre-flow ...)]
|
||||
@defform[(defmodulelang*/no-declare (id ...) pre-flow ...)]
|
||||
@defform[(defmodulereader*/no-declare (id ...) pre-flow ...)]
|
||||
)]{
|
||||
|
|
Loading…
Reference in New Issue
Block a user