doc scribble/comment-reader
svn: r13575 original commit: 8cf310d8fc82fcfda45fc9d879a746b458620afb
This commit is contained in:
parent
919845d306
commit
2d2c2d17bf
|
@ -11,8 +11,8 @@
|
||||||
(for-syntax scheme/base)
|
(for-syntax scheme/base)
|
||||||
(for-label scheme/base))
|
(for-label scheme/base))
|
||||||
|
|
||||||
(provide defmodule defmodule* defmodulelang defmodulelang*
|
(provide defmodule defmodule* defmodulelang defmodulelang* defmodulereader defmodulereader*
|
||||||
defmodule*/no-declare defmodulelang*/no-declare
|
defmodule*/no-declare defmodulelang*/no-declare defmodulereader*/no-declare
|
||||||
declare-exporting)
|
declare-exporting)
|
||||||
|
|
||||||
(define spacer (hspace 1))
|
(define spacer (hspace 1))
|
||||||
|
@ -47,7 +47,21 @@
|
||||||
(define-syntax-rule (defmodulelang lang . content)
|
(define-syntax-rule (defmodulelang lang . content)
|
||||||
(defmodulelang* (lang) . content))
|
(defmodulelang* (lang) . content))
|
||||||
|
|
||||||
(define (*defmodule names lang? content)
|
(define-syntax-rule (defmodulereader*/no-declare (lang ...) . content)
|
||||||
|
(*defmodule (list (schememodname lang) ...) 'reader (list . content)))
|
||||||
|
|
||||||
|
(define-syntax defmodulereader*
|
||||||
|
(syntax-rules ()
|
||||||
|
[(_ (name ...) #:use-sources (pname ...) . content)
|
||||||
|
(begin (declare-exporting name ... #:use-sources (pname ...))
|
||||||
|
(defmodulereader*/no-declare (name ...) . content))]
|
||||||
|
[(_ (name ...) . content)
|
||||||
|
(defmodulereader* (name ...) #:use-sources () . content)]))
|
||||||
|
|
||||||
|
(define-syntax-rule (defmodulereader lang . content)
|
||||||
|
(defmodulereader* (lang) . content))
|
||||||
|
|
||||||
|
(define (*defmodule names lang content)
|
||||||
(make-splice
|
(make-splice
|
||||||
(cons
|
(cons
|
||||||
(make-table
|
(make-table
|
||||||
|
@ -60,9 +74,11 @@
|
||||||
(make-omitable-paragraph
|
(make-omitable-paragraph
|
||||||
(cons
|
(cons
|
||||||
spacer
|
spacer
|
||||||
(if lang?
|
(if lang
|
||||||
(list (hash-lang) spacer (make-defschememodname name))
|
(if (eq? lang 'reader)
|
||||||
(list (scheme (require #,(make-defschememodname name)))))))))))
|
(list (schememetafont "#reader") spacer (make-defschememodname name))
|
||||||
|
(list (hash-lang) spacer (make-defschememodname name)))
|
||||||
|
(list (scheme (require #,(make-defschememodname name)))))))))))
|
||||||
names))
|
names))
|
||||||
(append (map (lambda (name)
|
(append (map (lambda (name)
|
||||||
(make-part-tag-decl `(mod-path ,(element->string name))))
|
(make-part-tag-decl `(mod-path ,(element->string name))))
|
||||||
|
|
|
@ -106,6 +106,7 @@ A few other escapes are recognized symbolically:
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
See also @schememodname[scribble/comment-reader].
|
||||||
}
|
}
|
||||||
|
|
||||||
@defform[(SCHEMEBLOCK datum ...)]{Like @scheme[schemeblock], but with
|
@defform[(SCHEMEBLOCK datum ...)]{Like @scheme[schemeblock], but with
|
||||||
|
@ -201,6 +202,47 @@ procedure, but use @scheme[var] if that cannot work for some reason.}
|
||||||
@defform[(svar datum)]{Like @scheme[var], but for subform non-terminals
|
@defform[(svar datum)]{Like @scheme[var], but for subform non-terminals
|
||||||
in a form definition.}
|
in a form definition.}
|
||||||
|
|
||||||
|
@; ------------------------------------------------------------------------
|
||||||
|
|
||||||
|
@subsection{Typesetting Comments}
|
||||||
|
|
||||||
|
@defmodulereader[scribble/comment-reader]
|
||||||
|
|
||||||
|
As a reader module, @schememodname[scribble/comment-reader] reads a
|
||||||
|
single S-expression that contains @litchar{;}-based comment lines, and
|
||||||
|
it wraps the comments with @scheme[code:comment] for use with forms
|
||||||
|
like @scheme[schemeblock]. More precisely,
|
||||||
|
@schememodname[scribble/comment-reader] extends the current reader to
|
||||||
|
adjust the parsing of @litchar{;}.
|
||||||
|
|
||||||
|
For example, within a Scribble document that imports
|
||||||
|
@schememodname[scribble/manual],
|
||||||
|
|
||||||
|
@verbatim[#:indent 2]|{
|
||||||
|
@#reader scribble/comment-reader
|
||||||
|
(schemeblock
|
||||||
|
;; This is not a pipe
|
||||||
|
(make-pipe)
|
||||||
|
)
|
||||||
|
}|
|
||||||
|
|
||||||
|
generates
|
||||||
|
|
||||||
|
@#reader scribble/comment-reader
|
||||||
|
(schemeblock
|
||||||
|
;; This is not a pipe
|
||||||
|
(make-pipe)
|
||||||
|
)
|
||||||
|
|
||||||
|
The initial @litchar["@"] is needed above to shift into S-expression
|
||||||
|
mode, so that @schememetafont{#reader} is recognized as a reader
|
||||||
|
declaration instead of literal text. Also, the example uses
|
||||||
|
@scheme[(schemeblock ....)] instead of
|
||||||
|
@schememetafont["@"]@scheme[schemeblock]@schememetafont["["]@scheme[....]@schememetafont["]"]
|
||||||
|
because the @"@"-reader would drop comments within the
|
||||||
|
@scheme[schemeblock] before giving
|
||||||
|
@schememodname[scribble/comment-reader] a chance to convert them.
|
||||||
|
|
||||||
@; ------------------------------------------------------------------------
|
@; ------------------------------------------------------------------------
|
||||||
@section[#:tag "doc-modules"]{Documenting Modules}
|
@section[#:tag "doc-modules"]{Documenting Modules}
|
||||||
|
|
||||||
|
@ -230,33 +272,33 @@ Like @scheme[defmodule], but documents @scheme[id] as a module path
|
||||||
suitable for use by either @scheme[require] or @schememodfont{#lang}.}
|
suitable for use by either @scheme[require] or @schememodfont{#lang}.}
|
||||||
|
|
||||||
|
|
||||||
@defform[(defmodule* (id ...+) maybe-sources pre-flow ...)]{
|
@defform[(defmodulereader id maybe-sources pre-flow ...)]{
|
||||||
|
|
||||||
Like @scheme[defmodule], but introduces multiple module paths instead
|
Like @scheme[defmodule], but documents @scheme[id] as a module path
|
||||||
|
suitable for use with @schememetafont{#reader}.}
|
||||||
|
|
||||||
|
|
||||||
|
@deftogether[(
|
||||||
|
@defform[(defmodule* (id ...+) maybe-sources pre-flow ...)]
|
||||||
|
@defform[(defmodulelang* (id ...+) maybe-sources pre-flow ...)]
|
||||||
|
@defform[(defmodulereader* (id ...+) maybe-sources pre-flow ...)]
|
||||||
|
)]{
|
||||||
|
|
||||||
|
Like @scheme[defmodule], etc., but introduces multiple module paths instead
|
||||||
of just one.}
|
of just one.}
|
||||||
|
|
||||||
|
@deftogether[(
|
||||||
|
@defform[(defmodule*/no-declare (id ...) pre-flow ...)]
|
||||||
|
@defform[(defmodulelang*/no-declare (id ...) pre-flow ...)]
|
||||||
|
@defform[(defmodulereader*/no-declare (id ...) pre-flow ...)]
|
||||||
|
)]{
|
||||||
|
|
||||||
@defform[(defmodulelang* (id ...+) maybe-sources pre-flow ...)]{
|
Like @scheme[defmodule*], etc., but without expanding to
|
||||||
|
|
||||||
Like @scheme[defmodulelang], but introduces multiple module paths
|
|
||||||
instead of just one.}
|
|
||||||
|
|
||||||
|
|
||||||
@defform[(defmodule*/no-declare (id ...) pre-flow ...)]{
|
|
||||||
|
|
||||||
Like @scheme[defmodule*], but without expanding to
|
|
||||||
@scheme[declare-exporting]. Use this form when you want to provide a
|
@scheme[declare-exporting]. Use this form when you want to provide a
|
||||||
more specific list of modules (e.g., to name both a specific module
|
more specific list of modules (e.g., to name both a specific module
|
||||||
and one that combines several modules) via your own
|
and one that combines several modules) via your own
|
||||||
@scheme[declare-exporting] declaration.}
|
@scheme[declare-exporting] declaration.}
|
||||||
|
|
||||||
|
|
||||||
@defform[(defmodulelang*/no-declare (id ...) pre-flow ...)]{
|
|
||||||
|
|
||||||
Like @scheme[defmodulelang*], but without expanding to
|
|
||||||
@scheme[declare-exporting].}
|
|
||||||
|
|
||||||
|
|
||||||
@defform/subs[(declare-exporting mod-path ... maybe-sources)
|
@defform/subs[(declare-exporting mod-path ... maybe-sources)
|
||||||
([maybe-sources code:blank
|
([maybe-sources code:blank
|
||||||
(code:line #:use-sources (mod-path ...))])]{
|
(code:line #:use-sources (mod-path ...))])]{
|
||||||
|
|
|
@ -9,4 +9,3 @@ provides utilities for typesetting Scheme code. The
|
||||||
@scheme[scribble/manual] forms provide a higher-level interface.}
|
@scheme[scribble/manual] forms provide a higher-level interface.}
|
||||||
|
|
||||||
@italic{To do:} document this library!
|
@italic{To do:} document this library!
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user