www

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

commit 04d28e74db373fbc00bb81ff70c362c5c934844f
parent 28ca18741f4a5b08982c413a15693b426aeb8f71
Author: JackFirth <jackhfirth@gmail.com>
Date:   Fri, 20 Feb 2015 23:10:18 -0800

Add documentation coverage functions

Diffstat:
Adoc-coverage/export-count.rkt | 11+++++++++++
Adoc-coverage/export-lists.rkt | 36++++++++++++++++++++++++++++++++++++
2 files changed, 47 insertions(+), 0 deletions(-)

diff --git a/doc-coverage/export-count.rkt b/doc-coverage/export-count.rkt @@ -0,0 +1,11 @@ +#lang racket + +(require "export-lists.rkt") + +(define module-num-exports (compose length module->all-exported-names)) +(define module-num-documented-exports (compose length module->documented-exported-names)) +(define module-num-undocumented-exports (compose length module->undocumented-exported-names)) + +(define (module-documentation% mod) + (/ (module-num-documented-exports mod) + (module-num-undocumented-exports mod))) diff --git a/doc-coverage/export-lists.rkt b/doc-coverage/export-lists.rkt @@ -0,0 +1,36 @@ +#lang racket + +(require scribble/xref + setup/xref + racket/syntax + rackunit) + +(provide module->all-exported-names + module->documented-exported-names + module->undocumented-exported-names + has-docs?) + +(define xref (load-collections-xref)) + +(define (phase-exported-names phase-exports) + (map first phase-exports)) + +(define (phase-exports->names exports) + (map first + (apply append (map (curryr drop 1) exports)))) + +(define (module->all-exported-names mod) + (let-values ([(exp-values exp-syntax) (module->exports mod)]) + (append (phase-exports->names exp-values) + (phase-exports->names exp-syntax)))) + +(define (has-docs? mod binding) + (not (not (xref-binding->definition-tag xref (list mod binding) #f)))) + +(define (module->documented-exported-names mod) + (filter (curry has-docs? mod) + (module->all-exported-names mod))) + +(define (module->undocumented-exported-names mod) + (filter-not (curry has-docs? mod) + (module->all-exported-names mod)))