[cxml-cvs] CVS closure-common

dlichteblau dlichteblau at common-lisp.net
Sun Oct 21 14:11:28 UTC 2007


Update of /project/cxml/cvsroot/closure-common
In directory clnet:/tmp/cvs-serv30482

Modified Files:
	hax.lisp 
Log Message:
HAX documentation


--- /project/cxml/cvsroot/closure-common/hax.lisp	2007/10/14 17:29:43	1.1
+++ /project/cxml/cvsroot/closure-common/hax.lisp	2007/10/21 14:11:28	1.2
@@ -129,3 +129,268 @@
   (:method ((handler default-handler) data)
     (declare (ignore data))
     nil))
+
+
+;;;; documentation
+
+(setf (documentation (find-package :hax) t)
+      "An event protocol for HTML serialization, this package is similar
+       to the HAX protocol defined by cxml for XML serialization.
+
+       (Technically, this package should have been spelled SAH, but HAX
+       sounds better.)
+
+       Note that Closure HTML is not a streaming parser yet.  Documents
+       are always parsed in full before the first HAX event is emitted.
+       In spite of this restriction, the HAX API is useful for HTML
+       serialization and transformation purposes, and for integration
+       with SAX.
+
+       @begin[HAX handlers]{section}
+       @aboutclass{abstract-handler}
+       @aboutclass{default-handler}
+       @end{section}
+       @begin[The attribute protocol]{section}
+       @aboutclass{standard-attribute}
+       @aboutfun{make-attribute}
+       @aboutfun{attribute-name}
+       @aboutfun{attribute-value}
+       @aboutfun{attribute-specified-p}
+       @end{section}
+       @begin[HAX events]{section}
+       @aboutfun{start-document}
+       @aboutfun{start-element}
+       @aboutfun{end-element}
+       @aboutfun{characters}
+       @aboutfun{comment}
+       @aboutfun{end-document}
+       @end{section}")
+
+(setf (documentation 'abstract-handler 'type)
+      "@short{The superclass of all HAX handlers.}
+
+       Direct subclasses have to implement all event methods, since
+       no default methods are defined on this class.
+
+       Note that it is permissible to use handlers that are not
+       instances of this class in some circumstances.
+
+       In particular,
+       @code{nil} is a valid HAX handler and ignores all events.
+
+       In addition,
+       @a[http://common-lisp.net/project/cxml/sax.html#sax]{SAX handlers}
+       are valid HAX handlers (and vice versa), even though
+       hax:abstract-handler and sax:abstract-handler do not
+       share a specific superclass.  HAX events sent to SAX handlers are
+       automatically re-signalled as XHTML SAX events, and SAX events sent
+       to HAX handlers are re-signalled as namespace-less HAX events.
+
+       However, user code should define subclasses of the documented
+       superclasses to enable the HAX/SAX bridging described above.
+
+       @see{chtml:parse}
+       @see{chtml:serialize-lhtml}
+       @see{chtml:serialize-pt}
+       @see{start-document}
+       @see{end-document}
+       @see{start-element}
+       @see{end-element}
+       @see{characters}
+       @see{comment}")
+
+(setf (documentation 'default-handler 'type)
+      "@short{A no-op HAX handler.}
+
+       This class defines methods for all HAX events that do nothing.
+       It is useful as a superclass when implementing a HAX handler that
+       is interested in only some events and not others.
+
+       @see{chtml:parse}
+       @see{chtml:serialize-lhtml}
+       @see{chtml:serialize-pt}
+       @see{start-document}
+       @see{end-document}
+       @see{start-element}
+       @see{end-element}
+       @see{characters}
+       @see{comment}")
+
+(setf (documentation 'standard-attribute 'type)
+      "@short{An implementation of the HAX attribute protocol.}
+
+       A standard class implementing the generic functions for HAX
+       attributes.  Instances of this class can be passed to
+       @fun{hax:start-element} in the list of attributes.
+
+       @see-slot{attribute-name}
+       @see-slot{attribute-value}
+       @see-slot{attribute-specified-p}
+       @see-constructor{make-instance}")
+
+(setf (documentation 'make-attribute 'function)
+      "@arg[name]{a string/rod}
+       @arg[value]{a string/rod}
+       @arg[specified-p]{a boolean, default is @code{t}}
+       @return{an instance of @class{standard-attribute}.}
+       @short{Creates a HAX attribute.}
+
+       Creates an instance that can be used with the generic functions
+       for HAX attributes.  The result can be passed to
+       @fun{hax:start-element} in the list of attributes.
+
+       @see{attribute-name}
+       @see{attribute-value}
+       @see{attribute-specified-p}")
+
+(setf (documentation 'find-attribute 'function)
+      "@arg[name]{a string/rod}
+       @arg[attrs]{a list of attributes}
+       @return{an attribute, or nil}
+       @short{Searches for an attribute by name.}
+
+       Returns the first attribute in @var{attrs} with the specified name,
+       or @code{nil} if no such attribute was found.
+
+       @see{attribute-name}")
+
+(setf (documentation 'attribute-name 'function)
+      "@arg[instance]{any class implementing this function}
+       @return{a string/rod}
+       @short{Return an attribute's name.}
+
+       Instances of this classes implementing this function can be passed to
+       @fun{hax:start-element} in the list of attributes.
+
+       @see{attribute-value}
+       @see{attribute-specified-p}")
+
+(setf (documentation 'attribute-value 'function)
+      "@arg[instance]{any class implementing this function}
+       @return{a string/rod}
+       @short{Return an attribute's value.}
+
+       Instances of this classes implementing this function can be passed to
+       @fun{hax:start-element} in the list of attributes.
+
+       @see{attribute-name}
+       @see{attribute-specified-p}")
+
+(setf (documentation 'attribute-specified-p 'function)
+      "@arg[instance]{any class implementing this function}
+       @return{a string/rod}
+       @short{Return whether the attribute was contained the parsed document.}
+
+       Attributes return @code{nil} here if they resulted from a default
+       value declaration in a DTD.
+
+       Instances of this classes implementing this function can be passed to
+       @fun{hax:start-element} in the list of attributes.
+
+       @see{attribute-name}
+       @see{attribute-value}")
+
+(setf (documentation 'start-document 'function)
+      "@arg[handler]{a HAX/SAX handler
+         (see @class{abstract-handler} for details)}
+       @arg[name]{root element name, a rod/string}
+       @arg[public-id]{nil or the Public ID, a rod/string}
+       @arg[system-id]{nil or the System ID/URI, a rod/string}
+       @return{unspecified}
+       @short{Signals the beginning on an HTML document.}
+
+       This is the first event sent to any handler.
+
+       If @var{system-id} is non-nil, the document includes a doctype
+       declaration.
+
+       @see{start-element}
+       @see{end-element}
+       @see{characters}
+       @see{comment}
+       @see{end-document}")
+
+(setf (documentation 'start-element 'function)
+      "@arg[handler]{a HAX/SAX handler
+         (see @class{abstract-handler} for details)}
+       @arg[name]{root element name, a rod/string}
+       @arg[attributes]{a list of attributes}
+       @return{unspecified}
+       @short{Signals the beginning of an HTML element.}
+
+       This event corresponds to the opening tag of an element. 
+
+       Elements of the attribute list can have any class, but must implement
+       the generic functions for attributes.  See @class{standard-attribute}
+       for the built-in attribute implementation.
+
+       @see{find-attribute}
+       @see{start-document}
+       @see{end-element}
+       @see{characters}
+       @see{comment}
+       @see{end-document}")
+
+(setf (documentation 'end-element 'function)
+      "@arg[handler]{a HAX/SAX handler
+         (see @class{abstract-handler} for details)}
+       @arg[name]{root element name, a rod/string}
+       @return{unspecified}
+       @short{Signals the end of an HTML element.}
+
+       This event corresponds to the closing tag of an element. 
+
+       @see{start-document}
+       @see{start-element}
+       @see{characters}
+       @see{comment}
+       @see{end-document}")
+
+(setf (documentation 'characters 'function)
+      "@arg[handler]{a HAX/SAX handler
+         (see @class{abstract-handler} for details)}
+       @arg[data]{rod/string}
+       @return{unspecified}
+       @short{Signals character data.}
+
+       This event represents character data in a document.
+
+       @see{start-document}
+       @see{start-element}
+       @see{end-element}
+       @see{comment}
+       @see{end-document}")
+
+(setf (documentation 'comment 'function)
+      "@arg[handler]{a HAX/SAX handler
+         (see @class{abstract-handler} for details)}
+       @arg[data]{rod/string}
+       @return{unspecified}
+       @short{Signals a comment.}
+
+       This event represents a comment.
+
+       @see{start-document}
+       @see{start-element}
+       @see{end-element}
+       @see{characters}
+       @see{end-document}")
+
+(setf (documentation 'end-document 'function)
+      "@arg[handler]{a HAX/SAX handler
+         (see @class{abstract-handler} for details)}
+       @return{The return value of this function depends on the handler class.}
+       @short{Signals the end on an HTML document.}
+
+       This is the last event sent to any handler, and signals the end of
+       serialization.
+
+       The return value of this function is usually returned to user code
+       by higher-level serialization functions and can be considered the
+       result of serialization and \"return value\" of the handler.
+
+       @see{start-document}
+       @see{start-element}
+       @see{end-element}
+       @see{characters}
+       @see{comment}")




More information about the Cxml-cvs mailing list