guile-docs/guile-docs/docs.scm

30 lines
834 B
Scheme

(define-module (guile-docs docs)
#:use-module (srfi srfi-9)
#:export (make-doc
doc?
doc-module
doc-symbol
doc-documentation
docs-in-module))
(define-record-type <doc>
(make-doc module symbol documentation)
doc?
(module doc-module)
(symbol doc-symbol)
(documentation doc-documentation))
(define (docs-in-module module)
"Returns a list of <doc> for each symbol in module mod"
(module-map
(lambda (sym var)
(let* ((binding (variable-ref var))
(proc (cond
((procedure? binding) binding)
((macro? binding) (macro-binding binding))
(else #f)))
(docs (when (procedure? proc) (procedure-documentation proc))))
(make-doc (module-name module) sym docs)))
module))