Commit 98fae55a authored by Dave Cooper's avatar Dave Cooper
Browse files

Merge pull request #16 from teodor-gelu/master

Hi Dave 
parents f6a39309 eaae032a
This diff is collapsed.
......@@ -1172,6 +1172,5 @@ with our vendors for second-level support on Allegro CL, SMLib, etc.
@b{@i{Genworks Technical Support can be reached at: @email{support@@genworks.com}.}}
@bye
1. (load "~/yadd-auto-doc.lisp")
2. (setq self (make-object 'yadd::document-yadd))
3. (the generate-documentation)
4. at shell level:
texi2pdf gdl-documentation.texi
\ No newline at end of file
(in-package :yadd)
(defparameter *data-pathname*
(make-pathname :directory (pathname-directory excl:*source-pathname*)
:device (pathname-device excl:*source-pathname*)))
(defparameter *data-pathname*
(make-pathname :directory (pathname-directory excl:*source-pathname*)
:device (pathname-device excl:*source-pathname*)))
(define-object document-yadd (base-object)
......@@ -38,7 +37,7 @@
:image? t
:package :geom-base)))
(define-object yadd2pdf (base-object)
(define-object yadd2pdf (base-object)
:input-slots ((image? nil)
(package :surf ))
:computed-slots
......@@ -80,15 +79,32 @@
(the-object doc-messages message-names))
(list
(mapcar #'(lambda (doc)
(the-object doc remark-string))
(the-object doc ;;;remark-string
section-plist))
(list-elements
(the-object doc-messages messages))))
(list(the-object doc-messages message-and-remarks))
(list (the-object doc-messages message-and-remarks))
))
(list-elements
(the-object doc-sections sections))))
(the documented-package-index)))
(doc-messages-s
(mapcar #'(lambda (doc-sections)
(mapcar #'(lambda (doc-messages)
(append
(list (the-object doc-messages category)
(the-object doc-messages message-names))
(list
(mapcar #'(lambda (doc)
(the-object doc remark-string
))
(list-elements
(the-object doc-messages messages))))
(list (the-object doc-messages message-and-remarks))
))
(list-elements
(the-object doc-sections sections))))
(the documented-package-index)))
(doc-sections
(mapcar #'(lambda (doc-sections)
......@@ -167,90 +183,202 @@
:description)
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(getf (nth n (the part-documentation-plist))
:description)
"@" "(at)" )
"<tt>" "@i{" )
"</tt>" "}")
"<i>" "@i{" )
"</i>" "} ")
;;italic it has to be replaced too.
"!!! Not applicable for this object !!!"))
(mapcar #'(lambda (documentation)
(if (fourth documentation)
(progn (format out "@noindent @b{~@(~a~)}~%~%"
(first documentation))
(let ((index (length (second documentation))))
(dotimes (n index)
(when (nth n (third documentation))
(format out "@b{:~a}~%~%"
(nth n (second documentation)))
(format out "@itemize {}~%~% @item ~a~%~%@end itemize~%~%"
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(nth n (third documentation))
"<p>" "" )
"<i>" "@i{" )
"</i>" "} ")
"<b>" "@b{" )
"</b>" "} ")
"<tt>" "" )
"</tt>" "")
" " "")
"<ul>" " @itemize ")
"</ul>" "
@end itemize
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(getf (nth n (the part-documentation-plist))
:description)
"@" "(at)")
" " "")
"<ol>" " @enumerate ")
"</ol>" "
@end enumerate
")
"<li>" " @item " )
"</li>" "" )
"<dl>" " @itemize {} " )
"</dl>" "
"<li>" " @item " )
"</li>" "" )
"<ul>" " @itemize ")
"</ul>" "
@end itemize
")
"<dt>" " @item " )
"</dt>" "" )
"<strong>" " @b{")
"</strong>" "} ")
"<dd>" " @itemize @minus ")
"</dd>" "
@end itemize
"<tt>" "@i{" )
"</tt>" "}")
"<i>" "@i{" )
"</i>" "} ")
;;italic it has to be replaced too.
"!!! Not applicable for this object !!!"))
(mapcar #'(lambda (documentation documentation-s)
(if (fourth documentation)
(if (eql :functions (first documentation))
(progn
(format out "@noindent @b{~@(~a~)}~%~%" (first documentation))
(let ((index (length (second documentation))))
(dotimes (n index)
(when (nth n (third documentation))
;; Flag!!!
;; condition used to remove the undocumented slots
;;
(if (getf (nth n (third documentation)) :type);; condition used to remove the undocumented slots
(format out "~%~%@noindent @b{~a} @i{~a}~%~%"
(nth n (second documentation)) (getf (nth n (third documentation)) :type))
(format out "~%~%"))
(format out "~a~%~%" (html2texi-string (getf (nth n (third documentation)) :intro)))
(if (getf (nth n (third documentation)) :&key)
(format out "~%~%@i{Keyword Arguments:} ~%~% @itemize {}~%~% ~{@item ~a~}~%~%@end itemize~%~%"
(mapcar #'(lambda (arg-1 arg-2)
(format nil "@b{~a} ~a, Default Value: ~a, ~{~a.~} ~%~%"
(if (listp arg-1) (first arg-1) arg-1)
(first (split arg-2 #\.))
(if (listp arg-1) (second arg-1) "@code{nil}")
(cdr (split arg-2 #\.))))
(plist-keys (getf (nth n (third documentation)) :&key))
(plist-values (getf (nth n (third documentation)) :&key))))
(format out "~%~%"))
(if (getf (nth n (third documentation)) :&optional)
(format out "~%~%@i{Optional Arguments:} ~%~% @itemize {}~%~% ~{@item ~a~}~%~%@end itemize~%~%"
(mapcar #'(lambda (arg-1 arg-2)
(format nil "@b{~a} ~a, Default Value: ~a, ~{~a.~} ~%~%"
(if (listp arg-1) (first arg-1) arg-1)
(first (split arg-2 #\.))
(if (listp arg-1) (second arg-1) "@code{nil}")
(cdr (split arg-2 #\.))))
(plist-keys (getf (nth n (third documentation)) :&optional))
(plist-values (getf (nth n (third documentation)) :&optional))))
(format out "~%~%"))
(if (getf (nth n (third documentation)) :&rest)
(format out "~%~%@i{Optional Arguments:} ~%~% @itemize {}~%~% ~{@item ~a~}~%~%@end itemize~%~%"
(mapcar #'(lambda (arg-1 arg-2)
(format nil "@b{~a} ~a, Default Value: ~a, ~{~a.~} ~%~%"
(if (listp arg-1) (first arg-1) arg-1)
(first (split arg-2 #\.))
(if (listp arg-1) (second arg-1) "@code{nil}")
(cdr (split arg-2 #\.))))
(plist-keys (getf (nth n (third documentation)) :&rest))
(plist-values (getf (nth n (third documentation)) :&rest))))
(format out "~%~%"))
(if (getf (nth n (third documentation)) :&body)
(format out "~%~%@i{Optional Arguments:} ~%~% @itemize {}~%~% ~{@item ~a~}~%~%@end itemize~%~%"
(mapcar #'(lambda (arg-1 arg-2)
(format nil "@b{~a} ~a, Default Value: ~a, ~{~a.~} ~%~%"
(if (listp arg-1) (first arg-1) arg-1)
(first (split arg-2 #\.))
(if (listp arg-1) (second arg-1) "@code{nil}")
(cdr (split arg-2 #\.))))
(plist-keys (getf (nth n (third documentation)) :&body))
(plist-values (getf (nth n (third documentation)) :&body))))
(format out "~%~%"))
))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;#+nil
(progn
(format out "@noindent @b{~@(~a~)}~%~%" (first documentation-s))
(let ((index (length (second documentation-s))))
(dotimes (n index)
(when (nth n (third documentation-s))
(format out "@noindent @b{~a}~%~%"
(nth n (second documentation-s)))
(format out "~%~% @itemize {}~%~% ~%~% @item ~%~% ~a~%~%@end itemize~%~%"
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
;; (excl:replace-re
;; (excl:replace-re
;; (excl:replace-re
(nth n (third documentation-s))
;;" " "")
"<p>" "" )
"</p>" "" )
"<ol>" " @enumerate ")
"</ol>" "
@end enumerate
"))))))
(format out "~%~%")))
(nth n (the doc-messages )))
")
;; "<pre>" " @smallexample ")
;; "</pre>" " @end smallexample ")
"<i>" "@i{" )
"</i>" "} ")
"<b>" "@b{" )
"</b>" "} ")
"<tt>" "" )
"</tt>" "")
"
" "")
"<ul>" " @itemize ")
"</ul>" "
@end itemize
")
"<li>" " @item " )
"</li>" "" )
"<dl>" " @itemize {} " )
"</dl>" "
@end itemize
")
"<dt>" " @item " )
"</dt>" "" )
"<strong>" " @b{")
"</strong>" "} ")
"<dd>" " @itemize @minus ")
"</dd>" "
@end itemize
")))))))
;;;;;;;;;;
(format out "~%~%")))
(nth n (the doc-messages )) (nth n (the doc-messages-s )))
(if (getf (nth n (the part-documentation-plist)) :examples)
(format out "@noindent @b{Examples}~%~%" )
(format out "~%~%"))
......@@ -262,10 +390,14 @@
(excl:replace-re
(getf (nth n (the part-documentation-plist)) :examples)
"@" "(at)" )
"<pre>" "@smallexample
@cartouche" )
"</pre>" "@end cartouche
@end smallexample")
"<pre>" "@smallexample")
;; @cartouche" )
"</pre>" "@end smallexample")
;;"@end cartouche
;;@end smallexample")
""))
(if (the image?)
(if (getf (nth n (the part-documentation-plist)) :examples)
......@@ -284,3 +416,71 @@
:hidden-objects
((general-description :type 'base-object)))
(defun html2texi-string (my-string)
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
(excl:replace-re
; (excl:replace-re
; (excl:replace-re
;; (excl:replace-re
;; (excl:replace-re
my-string
"<p>" "" )
"</p>" "" )
;; "<ol>" " @enumerate ")
;; "</ol>" "
;@end enumerate
;")
"<i>" "@i{" )
"</i>" "} ")
"<b>" "@b{" )
"</b>" "} ")
"<tt>" "@code{" )
"</tt>" "}")
"
" "")
"<ul>" " @itemize ")
"</ul>" "
@end itemize
")
;; "<li>" " @item " )
;;"</li>" "" )
"<dl>" " @itemize {} " )
"</dl>" "
@end itemize
")
"<dt>" " @item " )
"</dt>" "" )
"<strong>" " @b{")
"</strong>" "} ")
"<dd>" " @itemize @minus ")
"</dd>" "
@end itemize
"))
......
@subsection Gdl
@include yadd/gdl/base-rule-object.texi
@include yadd/gdl/null-object.texi
@include yadd/gdl/quantification.texi
@include yadd/gdl/vanilla-mixin.texi
@subsubsection Base-rule-object
@b{Description}
Encapsulates a basic computation, usually to be displayed to the user.
Typically this would be used as a mixin into a more sophisticated rule-object, but the type can be
used to detect objects which should be processed as "rules."
@noindent @b{Optional-input-slots}
@b{:rule-description}
@itemize {}
@item String. Short description of the rule (generally one line). Defaults to NIL.
@end itemize
@b{:rule-description-help}
@itemize {}
@item String. Verbose description of the purpose of the rule.
@end itemize
@b{:rule-result}
@itemize {}
@item String. The basic return-value, or result, of evaluating the rule.
@end itemize
@b{:rule-result-help}
@itemize {}
@item String. Verbose description of how the rule result is computed.
@end itemize
@b{:rule-title}
@itemize {}
@item String. Title to be used with the rule object. Defaults to NIL.
@end itemize
@b{:strings-for-display}
@itemize {}
@item String. Determines the rule's default name in various internal GDL contexts. Defaults to
the rule-title, or "Unnamed Rule" if rule-title is NIL.
@end itemize
@b{:suppress-display?}
@itemize {}
@item Boolean. Determines whether the rule is displayed by default in reports etc.
@end itemize
@b{:violated?}
@itemize {}
@item Boolean. Indicates whether this rule violates a standard condition.
@end itemize
@b{Example image is not generated!}
@subsubsection Null-object
@b{Description}
A part with no geometric representation and no children. Use this in a
conditional @i{:type} expression if you want to turn off a branch of the tree conditionally.
@b{Example image is not generated!}
@subsubsection Quantification
@b{Description}
A quantification is an aggregate created as a result of specifying @i{:sequence (:size ...))} or
@i{:sequence (:indices ...))} in an @i{:objects} specification. Usually, the elements of a quantified set are referenced by using
extra parentheses around the message in the reference chain and using the index number. But the aggregate itself also supports certain
messages, documented here. One message, @i{number-of-elements}, is not listed in the normal messages section because it is
internal. It can be used, and returns an integer representing the cardinality of the aggregate.
@noindent @b{Computed-slots}
@b{:first}
@itemize {}
@item GDL Object. Returns the first element of the aggregate.
@end itemize
@b{:last}
@itemize {}
@item GDL Object. Returns the last element of the aggregate.
@end itemize
@b{Example image is not generated!}
@subsubsection Vanilla-mixin*
@b{Description}
Vanilla-Mixin is automatically inherited by every object
created in GDL. It provides basic messages which are common to all GDL objects defined
with the define-object macro, unless @i{:no-vanilla-mixin t} is specifqqied at the toplevel
of the define-object form.
@noindent @b{Optional-input-slots}
@b{:hidden?}
@itemize {}