X-Git-Url: https://code.consxy.com/gitweb/gitweb.cgi?p=sheep;a=blobdiff_plain;f=src%2Fmain%2Fdocgen.lisp;h=bb1b7a9af5db6b5eeec33ac7e22971eb7c06a22c;hp=2ed740bdd66a51892a3afe9556c52c4ce55a1530;hb=683928f90e320bed84a816e8b59521b1c6714991;hpb=4c8ef06ce7bff14e78e79051870291d5075c42ea diff --git a/src/main/docgen.lisp b/src/main/docgen.lisp index 2ed740b..bb1b7a9 100644 --- a/src/main/docgen.lisp +++ b/src/main/docgen.lisp @@ -3,23 +3,27 @@ (define-condition validation-failure nil ((msg :initarg :msg :reader validation-failure-msg))) (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)))) + (macrolet + ((with-success-check (&rest f) + `(handler-case + (progn ,@f :success) + (validation-failure (v) (list :failure :msg (validation-failure-msg v)))))) + (let + ((symbs nil)) + (do-external-symbols (symb pkg) (push symb symbs)) + (setf symbs (sort symbs #'string< :key #'symbol-name)) + (remove :success + (append + (list (with-success-check (docgen-pkg:doc->ast pkg))) + (mapcar + (lambda (symb) (with-success-check (docgen-func:doc->ast symb))) + 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)))) + (with-output-to-string (str) + (format str "~A~%~%" (docgen-pkg:ast->md (docgen-pkg:doc->ast (find-package pkg)))) + (format str "~{~A~^~%~}" (mapcar (lambda (symb) (docgen-func:ast->md (docgen-func:doc->ast symb))) symbs)))))