bkyk8rc3zvpnsf5inmcqq4n3k98cv6hj-my-site-hyper-literate-git.test.suzanne.soy-0.0.1

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit e257507b0932672f40efa61e64e4b9012d324c9c
parent efd572e4260d5176cc4f30ae42bc0e525ceb8d02
Author: Eli Barzilay <eli@racket-lang.org>
Date:   Sun, 15 Feb 2009 23:46:17 +0000

use a more convenient hack to include the literate source

svn: r13632

original commit: 2e9eed3d2508dfcedef07c83ae9c7b91c58cb9c7

Diffstat:
Mcollects/games/chat-noir/chat-noir-doc.ss | 103+++++++++++++++++++++++--------------------------------------------------------
1 file changed, 30 insertions(+), 73 deletions(-)

diff --git a/collects/games/chat-noir/chat-noir-doc.ss b/collects/games/chat-noir/chat-noir-doc.ss @@ -1,76 +1,33 @@ #lang scribble/doc -@(require (for-syntax scheme/base - syntax/boundmap - scheme/list - (prefix-in scr: scribble/reader) - compiler/cm-accomplice)) - -@(require scribble/manual - scribble/struct - scribble/basic - scribble/decode) - -@(define :make-splice make-splice) - -@(define-syntax (chunk stx) - (syntax-case stx () - [(_ name expr ...) - (begin - (unless (identifier? #'name) - (raise-syntax-error #f "expected a chunk name" stx #'name)) - (unless (regexp-match #rx"^<.*>$" (symbol->string (syntax-e #'name))) - (raise-syntax-error #f "chunk names must begin and end with angle brackets, <...>" - stx - #'name)) - #`(:make-splice - (list - (italic #,(format "~a = " (syntax-e #'name))) - (schemeblock expr ...))))])) - -@;{the two lines below seem like they shoudl work, but they loop forever; probably the read-syntax-inside vs read-syntax difference. If they did work, then all of the stuff below could go away} -@;(require scheme/include) -@;(include/reader "chat-noir-literate.ss" scr:read-syntax-inside) - -@;{ stolen from include.ss. Should probably be refactored to just have one of these.} -@(define-for-syntax (give-lexical-content ctx content) - (let loop ([content content]) +@(begin + +(require (for-syntax scheme/base + syntax/boundmap + scheme/list + compiler/cm-accomplice) + scribble/manual + scribble/struct + scribble/basic + scribble/decode + scheme/include) + +;; define `chunk' as a macro that typesets the code +(define-syntax (chunk stx) + (syntax-case stx () + [(_ name expr ...) (cond - [(pair? content) - (cons (loop (car content)) - (loop (cdr content)))] - [(null? content) null] - [else - (let ([v (syntax-e content)]) - (datum->syntax - ctx - (cond - [(pair? v) - (loop v)] - [(vector? v) - (list->vector (loop (vector->list v)))] - [(box? v) - (box (loop (unbox v)))] - [else - v]) - content - content))]))) - -@(define-syntax (content-elsewhere stx) - (syntax-case stx () - [(_ fn) - (string? (syntax-e #'fn)) - (let ([fn (syntax-e #'fn)]) - (register-external-file (path->complete-path fn)) - (call-with-input-file fn - (λ (port) - (port-count-lines! port) - (let ([reader-line (read-line port)]) - (unless (regexp-match #rx"^#reader" reader-line) - (raise-syntax-error #f (format "expected a #reader line, found ~s" reader-line) stx)) - (let* ([content (scr:read-syntax-inside fn port)] - [w/context (give-lexical-content stx content)]) - #`(begin #,@w/context))))))])) - - -@content-elsewhere["chat-noir-literate.ss"] + [(not (identifier? #'name)) + (raise-syntax-error #f "expected a chunk name" stx #'name)] + [(not (regexp-match? #rx"^<.*>$" (symbol->string (syntax-e #'name)))) + (raise-syntax-error + #f "chunk names must begin and end with angle brackets, <...>" + stx #'name)] + [else #`(make-splice (list (emph (scheme name) " ::=") + (schemeblock expr ...)))])])) + +(define-syntax module + (syntax-rules () [(module name base body ...) (begin body ...)])) +(include "chat-noir-literate.ss") + +)