DocFinder

  'DocFinder' is a small product that allows to ask Zope for
  documentation about its objects.

  Unlike the API documentation which describes how thing should
  be, the DocFinder documentation describes (at least partially)
  how they really are: complete and precise.
  The information contains documentation strings. This
  information is, of cause, also unreliable.
  What is reliable are the available methods, their parameters
  and their security information.

  When 'DocFinder' is instantiated, two objects
  are created:

    1. the external method 'analyseDocumentation'

    2. the DTML method 'showDocumentation'

  To show documentation for an object, you will call 'showDocumentation'
  for this object. It will present the documentation
  as a two level explorable tree structure.
  The first level describes the classes from which the object
  is build. The second level provides information
  about each non-private attribute.

  For each class level attribute, its name, the roles allowed to access
  the attribute, its arguments (if it is callable) and
  the documentation (if any) are shown.

  Calling 'showDocumentation' for an object can take three forms:

   1. calling is via an URL::

        URL_to_OBJECT/showDocumentation

      will present the documentation for *OBJECT*.

   2. calling it from DTML with implicit argument passing::

        <dtml-var showDocumentation>

      will present the documentation for 'this()'.

   3. calling it from DTML with explicit argument passing::

        <dtml-var "showDocumentation(_.None,_,ObjToDoc__=object)">

      will present the documentation for *object*.

  'showDocumentation' uses 'analyseDocumentation' as an
  auxiliary do analyse the object for documentation.
  The result is a 'DocFinder' instance.
  It behaves like a sequence of 'ClassDoc' instances
  and the method 'tpValues' returns such a sequence.
  
  Each 'ClassDoc' provides methods 'Name' and 'Doc'.
  Furthermore, it behaves like a sequence of 'AttributeDoc'
  instances and 'tpValues' returns such a sequence.

  Each 'AttributeDoc' provides methods 'Name', 'Permission',
  'Roles', 'Args' and 'Doc'.
