*SL: avoid run-time dependency on Scribble
Instead, move the Scribble dependencies into generated documentation submodules.
This commit is contained in:
parent
428711bf93
commit
3f479a0556
|
@ -73,5 +73,6 @@
|
|||
;; procedures:
|
||||
(provide-and-scribble
|
||||
procedures
|
||||
(begin)
|
||||
(all-from-except intermediate: lang/private/intermediate-funs procedures cons list* append random)
|
||||
(all-from advanced: lang/private/advanced-funs procedures))
|
||||
|
|
|
@ -56,4 +56,5 @@
|
|||
;; procedures:
|
||||
(provide-and-scribble
|
||||
procedures
|
||||
(begin)
|
||||
(all-from beginner: (submod lang/private/beginner-funs with-wrapper) procedures))
|
||||
|
|
|
@ -61,4 +61,5 @@
|
|||
;; procedures:
|
||||
(provide-and-scribble
|
||||
procedures
|
||||
(begin)
|
||||
(all-from beginner: (submod lang/private/beginner-funs with-wrapper) procedures))
|
||||
|
|
|
@ -61,6 +61,5 @@
|
|||
;; procedures:
|
||||
(provide-and-scribble
|
||||
procedures
|
||||
(begin)
|
||||
(all-from intermediate: lang/private/intermediate-funs procedures))
|
||||
|
||||
|
||||
|
|
|
@ -62,6 +62,7 @@
|
|||
|
||||
(provide-and-scribble
|
||||
procedures
|
||||
(begin)
|
||||
(all-from beginner: lang/private/intermediate-funs procedures))
|
||||
|
||||
(provide
|
||||
|
|
|
@ -10,44 +10,46 @@
|
|||
(for-syntax scheme/base))
|
||||
|
||||
;; Documents the procedures:
|
||||
(require scribble/manual scribble/eval "sl-eval.rkt" "provide-and-scribble.rkt")
|
||||
(require "provide-and-scribble.rkt")
|
||||
|
||||
(define pp (let ([pretty-print (lambda (v) (pretty-write v))]) pretty-print))
|
||||
|
||||
(define (asl)
|
||||
(define *bsl
|
||||
(asl-eval
|
||||
(require 2htdp/image)
|
||||
(define c1 (circle 10 "solid" "green"))
|
||||
|
||||
(define zero 0)
|
||||
|
||||
(define one (list 1))
|
||||
|
||||
;; b 69, c 42, e 61
|
||||
(define list-for-hash '((b . 69) (c . 42) (e . 61) (r . 999)))
|
||||
|
||||
(define hsh (make-hash list-for-hash))
|
||||
(define heq (make-hasheq list-for-hash))
|
||||
(define heqv (make-hasheqv list-for-hash))
|
||||
(define ish (make-immutable-hash list-for-hash))
|
||||
(define ieq (make-immutable-hasheq list-for-hash))
|
||||
(define ieqv (make-immutable-hasheqv list-for-hash))
|
||||
|
||||
(define q (make-posn "bye" 2))
|
||||
(define p (make-posn 2 -3))
|
||||
|
||||
(define v (vector "a" "b" "c" "d" "e"))
|
||||
|
||||
(define b (box 33))
|
||||
|
||||
(define s "hello world")
|
||||
(define x (list 2 "hello" true))))
|
||||
(set! asl (lambda () *bsl))
|
||||
*bsl)
|
||||
|
||||
(provide-and-scribble
|
||||
procedures
|
||||
|
||||
(begin
|
||||
(require scribble/manual scribble/eval "sl-eval.rkt")
|
||||
(define (asl)
|
||||
(define *bsl
|
||||
(asl-eval
|
||||
(require 2htdp/image)
|
||||
(define c1 (circle 10 "solid" "green"))
|
||||
|
||||
(define zero 0)
|
||||
|
||||
(define one (list 1))
|
||||
|
||||
;; b 69, c 42, e 61
|
||||
(define list-for-hash '((b . 69) (c . 42) (e . 61) (r . 999)))
|
||||
|
||||
(define hsh (make-hash list-for-hash))
|
||||
(define heq (make-hasheq list-for-hash))
|
||||
(define heqv (make-hasheqv list-for-hash))
|
||||
(define ish (make-immutable-hash list-for-hash))
|
||||
(define ieq (make-immutable-hasheq list-for-hash))
|
||||
(define ieqv (make-immutable-hasheqv list-for-hash))
|
||||
|
||||
(define q (make-posn "bye" 2))
|
||||
(define p (make-posn 2 -3))
|
||||
|
||||
(define v (vector "a" "b" "c" "d" "e"))
|
||||
|
||||
(define b (box 33))
|
||||
|
||||
(define s "hello world")
|
||||
(define x (list 2 "hello" true))))
|
||||
(set! asl (lambda () *bsl))
|
||||
*bsl))
|
||||
|
||||
("Numbers: Integers, Rationals, Reals, Complex, Exacts, Inexacts"
|
||||
@defproc[(random [x integer]) integer]{
|
||||
|
|
|
@ -12,12 +12,9 @@
|
|||
;; Implements the procedures:
|
||||
(require "teachprims.rkt" "teach.rkt" lang/posn lang/imageeq "provide-and-scribble.rkt")
|
||||
|
||||
;; Documents the procedures:
|
||||
(require scribble/manual scribble/eval "sl-eval.rkt")
|
||||
|
||||
(define-syntax (provide-and-wrap stx)
|
||||
(syntax-parse stx
|
||||
[(provide-and-wrap wrap doc-tag:id (title (defproc (name args ...) range w ...) ...) ...)
|
||||
[(provide-and-wrap wrap doc-tag:id requires (title (defproc (name args ...) range w ...) ...) ...)
|
||||
(with-syntax ([((f ...) ...) (map generate-temporaries (syntax->list #'((name ...) ...)))]
|
||||
[((internal-name ...) ...)
|
||||
(map (lambda (x)
|
||||
|
@ -40,11 +37,15 @@
|
|||
(module+ with-wrapper
|
||||
(wrap f internal-name) ... ...
|
||||
(provide-and-scribble
|
||||
doc-tag (title (defproc ((f external-name) args ...) range w ...) ...) ...))
|
||||
doc-tag
|
||||
requires
|
||||
(title (defproc ((f external-name) args ...) range w ...) ...) ...))
|
||||
;; and one that doesn't
|
||||
(module+ without-wrapper
|
||||
(provide-and-scribble
|
||||
doc-tag (title (defproc (name args ...) range w ...) ...) ...))))]))
|
||||
doc-tag
|
||||
requires
|
||||
(title (defproc (name args ...) range w ...) ...) ...))))]))
|
||||
|
||||
(define-syntax (in-rator-position-only stx)
|
||||
(syntax-case stx ()
|
||||
|
@ -69,32 +70,34 @@
|
|||
#'orig-name))]))]))
|
||||
|
||||
|
||||
(define (bsl)
|
||||
(define *bsl
|
||||
(bsl+-eval
|
||||
(require 2htdp/image)
|
||||
(define c1 (circle 10 "solid" "green"))
|
||||
|
||||
(define zero 0)
|
||||
|
||||
(define one (list 1))
|
||||
|
||||
(define q (make-posn "bye" 2))
|
||||
(define p (make-posn 2 -3))
|
||||
|
||||
(define a (list (list 'a 22) (list 'b 8) (list 'c 70)))
|
||||
(define v (list 1 2 3 4 5 6 7 8 9 'A))
|
||||
(define w (list (list (list (list "bye") 3) true) 42))
|
||||
(define z (list (list (list (list 'a 'b) 2 3) ) (list false true) "world"))
|
||||
(define y (list (list (list 1 2 3) false "world")))
|
||||
(define x (list 2 "hello" true))))
|
||||
(set! bsl (lambda () *bsl))
|
||||
*bsl)
|
||||
|
||||
;; procedures with documentation:
|
||||
(provide-and-wrap
|
||||
in-rator-position-only
|
||||
procedures
|
||||
|
||||
(begin
|
||||
(require scribble/manual scribble/eval "sl-eval.rkt")
|
||||
(define (bsl)
|
||||
(define *bsl
|
||||
(bsl+-eval
|
||||
(require 2htdp/image)
|
||||
(define c1 (circle 10 "solid" "green"))
|
||||
|
||||
(define zero 0)
|
||||
|
||||
(define one (list 1))
|
||||
|
||||
(define q (make-posn "bye" 2))
|
||||
(define p (make-posn 2 -3))
|
||||
|
||||
(define a (list (list 'a 22) (list 'b 8) (list 'c 70)))
|
||||
(define v (list 1 2 3 4 5 6 7 8 9 'A))
|
||||
(define w (list (list (list (list "bye") 3) true) 42))
|
||||
(define z (list (list (list (list 'a 'b) 2 3) ) (list false true) "world"))
|
||||
(define y (list (list (list 1 2 3) false "world")))
|
||||
(define x (list 2 "hello" true))))
|
||||
(set! bsl (lambda () *bsl))
|
||||
*bsl))
|
||||
|
||||
("Numbers: Integers, Rationals, Reals, Complex, Exacts, Inexacts"
|
||||
@defproc[(number? [n any/c]) boolean?]{
|
||||
|
|
|
@ -7,20 +7,23 @@
|
|||
(for-syntax scheme/base))
|
||||
|
||||
;; Documents the procedures:
|
||||
(require scribble/manual scribble/eval "sl-eval.rkt" "provide-and-scribble.rkt")
|
||||
|
||||
(define (isl)
|
||||
(define *bsl
|
||||
(isl+-eval
|
||||
; (require 2htdp/image)
|
||||
(define i 3)
|
||||
(define a-list '(0 1 2 3 4 5 6 7 8 9))
|
||||
(define threshold 3)))
|
||||
(set! isl (lambda () *bsl))
|
||||
*bsl)
|
||||
(require "provide-and-scribble.rkt")
|
||||
|
||||
(provide-and-scribble
|
||||
procedures
|
||||
|
||||
(begin
|
||||
(require scribble/manual scribble/eval "sl-eval.rkt")
|
||||
(define (isl)
|
||||
(define *bsl
|
||||
(isl+-eval
|
||||
; (require 2htdp/image)
|
||||
(define i 3)
|
||||
(define a-list '(0 1 2 3 4 5 6 7 8 9))
|
||||
(define threshold 3)))
|
||||
(set! isl (lambda () *bsl))
|
||||
*bsl))
|
||||
|
||||
(all-from-except beginner: (submod lang/private/beginner-funs without-wrapper) procedures + * / append)
|
||||
|
||||
("Numbers (relaxed conditions)"
|
||||
|
|
|
@ -29,32 +29,30 @@ tests to run:
|
|||
collects/tests/htdp-lang/
|
||||
|#
|
||||
|
||||
(require (for-syntax syntax/parse) scribble/manual scribble/eval racket/sandbox)
|
||||
(require (for-syntax syntax/parse))
|
||||
|
||||
(require racket/provide)
|
||||
|
||||
(provide
|
||||
provide-and-scribble all-from all-from-except
|
||||
)
|
||||
provide-and-scribble
|
||||
all-from all-from-except defproc)
|
||||
|
||||
;; ---------------------------------------------------------------------------------------------------
|
||||
|
||||
(define-for-syntax *add #f)
|
||||
|
||||
(define-syntax-rule
|
||||
(all-from a ...)
|
||||
(raise-syntax-error "use with provide-and-scribble only"))
|
||||
|
||||
(define-syntax-rule
|
||||
(all-from-except a ...)
|
||||
(raise-syntax-error "use with provide-and-scribble only"))
|
||||
(define-for-syntax (provide-and-scribble-only stx)
|
||||
(raise-syntax-error #f "use with provide-and-scribble only" stx))
|
||||
(define-syntax all-from provide-and-scribble-only)
|
||||
(define-syntax all-from-except provide-and-scribble-only)
|
||||
(define-syntax defproc provide-and-scribble-only)
|
||||
|
||||
(define-syntax (provide-and-scribble stx)
|
||||
(syntax-parse stx #:literals (defproc)
|
||||
[(provide-and-scribble doc-tag:id rows ...)
|
||||
(provide-and-scribble-proc #'doc-tag #'(rows ...))]))
|
||||
(syntax-parse stx #:literals ()
|
||||
[(provide-and-scribble doc-tag:id requires rows ...)
|
||||
(provide-and-scribble-proc #'requires #'doc-tag #'(rows ...))]))
|
||||
|
||||
(define-for-syntax (provide-and-scribble-proc doc-tag row*)
|
||||
(define-for-syntax (provide-and-scribble-proc requires doc-tag row*)
|
||||
(define-values (add-docs-and-provide provides)
|
||||
(for/fold ((add-docs-and-provide '()) (provides '())) ((row (syntax->list row*)))
|
||||
(syntax-parse row #:literals (defproc all-from all-from-except)
|
||||
|
@ -76,7 +74,7 @@ tests to run:
|
|||
add-docs-and-provide)
|
||||
(cons #`(provide #,@(optional-rename-out name*))
|
||||
provides))])))
|
||||
(provide-and-scribble-code doc-tag add-docs-and-provide provides))
|
||||
(provide-and-scribble-code requires doc-tag add-docs-and-provide provides))
|
||||
|
||||
;; Path Identifier Identifier [Listof Identifier] ->* [-> Syntax] Syntax[List]
|
||||
;; create the require and provide clauses AND
|
||||
|
@ -116,13 +114,15 @@ tests to run:
|
|||
;; generate (module+ doc-tag ...) with the documentation in add-docs-and-provide,
|
||||
;; the first time it adds functions to (module+ doc-tag ...) that help render the docs
|
||||
;; export the provides list
|
||||
(define-for-syntax (provide-and-scribble-code doc-tag add-docs-and-provide provides)
|
||||
(define-for-syntax (provide-and-scribble-code requires doc-tag add-docs-and-provide provides)
|
||||
(with-syntax ([(p* ...) (reverse provides)])
|
||||
(cond
|
||||
[*add #`(begin p* ... (module+ #,doc-tag #,@(map (lambda (adp) (adp)) (reverse add-docs-and-provide))))]
|
||||
[else
|
||||
(set! *add (syntax-local-introduce #'add-sections))
|
||||
#`(begin (module+ #,doc-tag
|
||||
(require scribble/manual)
|
||||
#,requires
|
||||
;; -----------------------------------------------------------------------
|
||||
;; Section = [Listof (cons Identifier Doc)]
|
||||
;; Sections = [Listof (list Title Section)]
|
||||
|
|
Loading…
Reference in New Issue
Block a user