(asdf:oos 'asdf:load-op :cldoc) (defpackage :gol.doc (:use :cl :cldoc)) (in-package :gol.doc) (defclass defgeneric/cc-descriptor (cldoc::defgeneric-descriptor) ()) (defclass defmethod/cc-descriptor (cldoc::defmethod-descriptor) ()) (defclass defaction-descriptor (defmethod/cc-descriptor) ()) (defclass defcomponent-descriptor (cldoc::defclass-descriptor) ()) (defclass deftag-descriptor (cldoc::defmacro-descriptor) ()) (define-descriptor-handler DEFACTION (form) "ucw action" ;; name arglist documentation-string ;; (defmethod name {qualifiers}* lambda-list [ {decl}* || doc ] body) (multiple-value-bind (qualifiers lambda-list) (cldoc::find-qualifiers-and-lambda-list (cddr form)) (make-instance 'defaction-descriptor :type (format nil "~s" (first form)) :name (format nil "~s" (second form)) :qualifiers qualifiers :lambda-list lambda-list :doc (cldoc::extract-doc (if qualifiers (cddddr form) (cdddr form)))))) (define-descriptor-handler DEFMETHOD/CC (form) "continuation rewritten method" ;; name arglist documentation-string ;; (defmethod name {qualifiers}* lambda-list [ {decl}* || doc ] body) (multiple-value-bind (qualifiers lambda-list) (cldoc::find-qualifiers-and-lambda-list (cddr form)) (make-instance 'defmethod/cc-descriptor :type (format nil "~s" (first form)) :name (format nil "~s" (second form)) :qualifiers qualifiers :lambda-list lambda-list :doc (cldoc::extract-doc (if qualifiers (cddddr form) (cdddr form)))))) (define-descriptor-handler DEFGENERIC/CC (form) "continue rewritten generic function" (make-instance 'defgeneric/cc-descriptor :type (format nil "~s" (first form)) :name (format nil "~s" (second form)) :lambda-list (third form) :doc (second (find :documentation (cdddr form) :key #'car)))) (define-descriptor-handler DEFCOMPONENT (form) "component" (let ((class (make-instance 'defcomponent-descriptor :type (format nil "~s" (first form)) :name (format nil "~s" (second form)) :inheritence (third form) :slots (cldoc::handle-slots (format nil "~s" (second form)) (fourth form)) :doc (second (find :documentation (nthcdr 4 form) :key #'car))))) (cldoc::make-slot-lambdas class (list (second form))) class)) (define-descriptor-handler IT.BESE.YACLML:DEFTAG-MACRO (form) "yaclml tag" (make-instance 'deftag-descriptor :type (format nil "~s" (first form)) :name (format nil "~s" (second form)) :lambda-list (third form) :doc (if (stringp (fourth form)) (fourth form) ""))) (define-descriptor-handler DEF-SMIL-TAG (form) "yaclml tag" (make-instance 'deftag-descriptor :type (format nil "~s" (first form)) :name (format nil "~s" (second form)) :lambda-list (cons '&key (cddr form)) :doc "")) (define-descriptor-handler DEF-EMPTY-SMIL-TAG (form) "yaclml tag" (make-instance 'deftag-descriptor :type (format nil "~s" (first form)) :name (format nil "~s" (second form)) :lambda-list (cons '&key (cddr form)) :doc "")) (defmacro defptype (dsc str) `(defmethod cldoc::html-printable-type ((sd ,dsc)) (declare (ignore sd)) ,str)) (defptype defcomponent-descriptor "Component") (defptype defgeneric/cc-descriptor "Call/CC Generic") (defptype defmethod/cc-descriptor "Call/CC Method") (defptype defaction-descriptor "UCW Action") (defptype deftag-descriptor "YACLML Tag") (let ((*default-pathname-defaults* (asdf:system-relative-pathname :golgonooza "src/"))) (extract-documentation 'html "documentation" '("packages.lisp" "ucw-compat.lisp" "query-view.lisp" "simple-form.lisp" "site-control.lisp" "smil-tags.lisp" "elephant/elephant-packages.lisp" "elephant/elephant-query-view.lisp" "elephant/elephant-site.lisp" "elephant/elephant-utils.lisp")))