Add function documentation checker/converter
[sheep] / src / main / docgen.lisp
1 (in-package #:docgen)
2
3 (define-condition validation-failure nil ((msg :initarg :msg :reader validation-failure-msg)))
4
5 (defun validate-package (pkg)
6  (let
7   ((symbs nil))
8   (do-external-symbols (symb pkg) (push symb symbs))
9   (setf symbs (sort symbs #'string< :key #'symbol-name))
10   (remove :success
11    (mapcar
12     (lambda (symb)
13      (handler-case
14       (progn
15        (docgen-func:doc->ast symb)
16        :success)
17       (validation-failure (v) (list :failure :msg (validation-failure-msg v)))))
18     symbs))))
19
20 (defun export-package (pkg)
21  (let
22   ((symbs nil))
23   (do-external-symbols (symb pkg) (push symb symbs))
24   (setf symbs (sort symbs #'string< :key #'symbol-name))
25   (format nil "~{~A~^~%~}" (mapcar (lambda (symb) (docgen-func:ast->md (docgen-func:doc->ast symb))) symbs))))