commit 196e960734b31eb2e1974a7d58675b5b09f1e41f
parent d166f0969cfd2c2920acb4eeb15d040588fb0f78
Author: Robby Findler <robby@racket-lang.org>
Date: Mon, 16 Feb 2009 16:18:26 +0000
adjusted TOC
svn: r13666
original commit: 16d3208fb351e6803e62234205d3ff94bc5ff397
Diffstat:
1 file changed, 23 insertions(+), 12 deletions(-)
diff --git a/collects/games/chat-noir/literate-doc-wrapper.ss b/collects/games/chat-noir/literate-doc-wrapper.ss
@@ -3,9 +3,12 @@
;; Use this module to create literate doc wrappers -- files that require the
;; literate code in a way that makes it a scribble file.
-(provide include chunk (all-from-out scribble/manual))
+(provide include
+ chunk
+ chunkref
+ (all-from-out scribble/manual))
-(require scribble/manual scribble/decode scheme/include
+(require scribble/manual scribble/decode scribble/struct scheme/include
(for-syntax scheme/base syntax/boundmap))
(begin-for-syntax
@@ -18,21 +21,29 @@
;; contained code.
(define-syntax (chunk stx)
(syntax-case stx ()
- [(_ #:part #f name expr ...)
- #'(make-splice (list (bold (scheme name) " ::=")
- (schemeblock expr ...)))]
- [(_ #:part part-function name expr ...)
+ [(_ name expr ...)
(let ([n (add1 (free-identifier-mapping-get
chunk-number #'name (lambda () 0)))])
(free-identifier-mapping-put! chunk-number #'name n)
- (with-syntax ([tag (format "~a~a" (syntax->datum #'name)
+ (with-syntax ([tag (format "~a~a"
+ (syntax-e #'name)
(if (n . > . 1) (format ":~a" n) ""))]
+ [str (format "~a" (syntax-e #'name))]
[(more ...) (if (n . > . 1)
- #`((subscript #,(format "~a" n)))
- #`())])
- #'(make-splice (list (part-function #:tag tag (scheme name) more ...)
- (schemeblock expr ...)))))]
- [(_ name expr ...) #'(chunk #:part subsection name expr ...)]))
+ #`((subscript #,(format "~a" n)))
+ #`())])
+ #`(make-splice (list
+ (make-toc-element #f
+ (list (elemtag '(chunk tag) (italic (scheme name) " ::=")))
+ (list (make-element "smaller" (list (elemref '(chunk tag) str more ...)))))
+ (schemeblock expr ...)))))]))
+
+(define-syntax (chunkref stx)
+ (syntax-case stx ()
+ [(_ id)
+ (identifier? #'id)
+ (with-syntax ([str (format "~a" (syntax-e #'id))])
+ #'(elemref '(chunk str) str))]))
;; HACK: provide a fake `module', which makes it possible to include a module
;; and get only its code in.