Add function documentation checker/converter
[sheep] / src / main / docgen.lisp
index 7142dfe4f6d6d65444fdacedb4c2ac57fd966675..2ed740bdd66a51892a3afe9556c52c4ce55a1530 100644 (file)
@@ -1,5 +1,25 @@
 (in-package #:docgen)
 
 (in-package #:docgen)
 
-(defun validate-package (package))
+(define-condition validation-failure nil ((msg :initarg :msg :reader validation-failure-msg)))
 
 
-(defun export-package (package))
+(defun validate-package (pkg)
+ (let
+  ((symbs nil))
+  (do-external-symbols (symb pkg) (push symb symbs))
+  (setf symbs (sort symbs #'string< :key #'symbol-name))
+  (remove :success
+   (mapcar
+    (lambda (symb)
+     (handler-case
+      (progn
+       (docgen-func:doc->ast symb)
+       :success)
+      (validation-failure (v) (list :failure :msg (validation-failure-msg v)))))
+    symbs))))
+
+(defun export-package (pkg)
+ (let
+  ((symbs nil))
+  (do-external-symbols (symb pkg) (push symb symbs))
+  (setf symbs (sort symbs #'string< :key #'symbol-name))
+  (format nil "~{~A~^~%~}" (mapcar (lambda (symb) (docgen-func:ast->md (docgen-func:doc->ast symb))) symbs))))