Fixing optional argument signatures. Adding some initial docs.

This commit is contained in:
Alex Shinn 2014-07-29 22:42:46 +09:00
parent 8d1250dc43
commit 6c0c3e53e9

View file

@ -1,4 +1,7 @@
;;> A library for generating SXML docs from Scribble, directly or
;;> extracted from literate docs.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; utils ;; utils
@ -566,7 +569,7 @@ div#footer {padding-bottom: 50px}
(lambda (out) (lambda (out)
(display "(" out) (display "(" out)
(write (car sig) out) (write (car sig) out)
(let lp ((ls sig)) (let lp ((ls (cdr sig)))
(cond (cond
((pair? (car ls)) ((pair? (car ls))
(display " [" out) (display " [" out)
@ -620,9 +623,10 @@ div#footer {padding-bottom: 50px}
(else (else
(lp (cdr ls) (cons (car ls) rev-pre))))))))) (lp (cdr ls) (cons (car ls) rev-pre)))))))))
;; Extract inline scribble documentation (with the ;;> prefix) from a ;;> Extract inline Scribble documentation (with the ;;> prefix) from
;; source file, associating any signatures from the provided defs when ;;> the source file \var{file}, associating any signatures from the
;; available and not overridden in the docs. ;;> provided defs when available and not overridden in the docs.
(define (extract-file-docs mod file all-defs strict? . o) (define (extract-file-docs mod file all-defs strict? . o)
;; extract (<file> . <line>) macro source or ;; extract (<file> . <line>) macro source or
;; (<offset> <file . <line>>) procedure source ;; (<offset> <file . <line>>) procedure source
@ -796,7 +800,11 @@ div#footer {padding-bottom: 50px}
((macro? x) (macro-source x)) ((macro? x) (macro-source x))
(else #f))) (else #f)))
;; extract documentation from a module ;;> Extract the literate Scribble docs from module \var{mod-name} and
;;> return them as sxml. If \var{strict?} is true ignore docs for
;;> unexported values, defined by the optional \var{exports} which
;;> defaults to all the module exports.
(define (extract-module-docs mod-name strict? . o) (define (extract-module-docs mod-name strict? . o)
(let ((mod (load-module mod-name))) (let ((mod (load-module mod-name)))
(if (not mod) (if (not mod)
@ -826,6 +834,10 @@ div#footer {padding-bottom: 50px}
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;> Extract the literate Scribble docs for module \var{mod-name} and
;;> print them to \var{out}, rendered with \var{render} which defaults
;;> to \scheme{sxml-display-as-text}.
(define (print-module-docs mod-name . o) (define (print-module-docs mod-name . o)
(let ((out (if (pair? o) (car o) (current-output-port))) (let ((out (if (pair? o) (car o) (current-output-port)))
(render (or (and (pair? o) (pair? (cdr o)) (cadr o)) (render (or (and (pair? o) (pair? (cdr o)) (cadr o))
@ -837,6 +849,10 @@ div#footer {padding-bottom: 50px}
(make-module-doc-env mod-name)) (make-module-doc-env mod-name))
out))) out)))
;;> Extract the literate Scribble docs for just the binding for
;;> \var{var} in module \var{mod-name}, and print them as in
;;> \scheme{print-module-docs}.
(define (print-module-binding-docs mod-name var . o) (define (print-module-binding-docs mod-name var . o)
(let ((out (if (pair? o) (car o) (current-output-port))) (let ((out (if (pair? o) (car o) (current-output-port)))
(render (or (and (pair? o) (pair? (cdr o)) (cadr o)) (render (or (and (pair? o) (pair? (cdr o)) (cadr o))
@ -849,6 +865,9 @@ div#footer {padding-bottom: 50px}
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;> Extract the literate Scribble docs for \var{proc} which should be
;;> a procedure and return them as sxml.
(define (procedure-docs proc) (define (procedure-docs proc)
(let ((mod (and (procedure? proc) (containing-module proc)))) (let ((mod (and (procedure? proc) (containing-module proc))))
(and mod (and mod
@ -856,6 +875,9 @@ div#footer {padding-bottom: 50px}
(extract-module-docs (car mod) #t (list (procedure-name proc))) (extract-module-docs (car mod) #t (list (procedure-name proc)))
(make-module-doc-env (car mod)))))) (make-module-doc-env (car mod))))))
;;> Extract the literate Scribble docs for \var{proc} which should be
;;> a procedure and render them as in \scheme{print-module-docs}.
(define (print-procedure-docs proc . o) (define (print-procedure-docs proc . o)
(let ((out (if (pair? o) (car o) (current-output-port))) (let ((out (if (pair? o) (car o) (current-output-port)))
(render (or (and (pair? o) (pair? (cdr o)) (cadr o)) (render (or (and (pair? o) (pair? (cdr o)) (cadr o))