Package zope :: Package configuration :: Module zopeconfigure :: Class ZopeConfigure
[show private | hide private]
[frames | no frames]

Type ZopeConfigure

          object --+        
                   |        
ConfigurationContext --+    
                       |    
GroupingContextDecorator --+
                           |
                          ZopeConfigure


Zope configure directive

This file contains the implementation of the Zope configure directive. It is broken out in a separate file to provide an example of a grouping directive.

The zope configuration directive is a pure grouping directive. It doesn't compute any actions on it's own. Instead, it allows a package to be specified, affecting the interpretation of relative dotted names and file paths. It also allows an i18n domain to be specified. The information collected is used by subdirectives.

To define a grouping directive, we need to do three things:

The parameter schema is given by IZopeConfigure. It specifies a package parameter and an i18n_domain paramter. The package parameter is specified as a GlobalObject. This means it must be given as a dotted name that can be resolved through import. The i18n domain is just a plain (not unicode) string.

The handler class has a constructor that takes a context to be adapted and zero or more arguments (depending on the paramter schema). The handler class must implement zope.configuration.interfaces.IGroupingContext, which defines hooks before and after, that are called with no arguments before and after nested directives are processed. If a grouping directive handler creates any actions, or does any computation, this is normally done in either the before or after hooks. Grouping handlers are normally decorators.

The base class, zope.configuration.config.GroupingContextDecorator, is normally used to define grouping directive handlers. It provides:

The ZopeConfigure provides handling for the configure directive. It subclasses GroupingContextDecorator, and overrides the constructor to set the basepath attribute if a package argument is provided. Note that it delegates the job of assigning paramters to attribute to the GroupingContextDecorator constructor.

The last step is to register the directive using the meta configuration directive. If we wanted to register the Zope configure directive for the zope namespace, we'd use a meta-configuration directive like:

<meta:groupingDirective
   namespace="http://namespaces.zope.org/zope"
   name="configure"
   schema="zope.configuration.zopeconfigure.IZopeConfigure"
   handler="zope.configuration.zopeconfigure.ZopeConfigure"
   >
   Zope configure

   The ``configure`` node is normally used as the root node for a
   configuration file.  It can also be used to specify a package or
   internationalization domain for a group of directives within a
   file by grouping those directives.
</meta:groupingDirective>

We use the groupingDirective meta-directive to register a grouping directive. The parameters are self explanatory. The textual contents of the directive provide documentation text, excluding parameter documentation, which is provided by the schema.

(The Zope configuration directive is actually registered using a lower-level Python API because it is registered for all namespaces, which isn't supported using the meta-configuration directives.)

$Id: zopeconfigure.py,v 1.2 2005/06/24 16:52:27 nyergler Exp $


Method Summary
  __init__(self, context, **kw)
    Inherited from GroupingContextDecorator
  __getattr__(self, name, getattr, setattr)
  after(self)
  before(self)
    Inherited from ConfigurationContext
  action(self, discriminator, callable, args, kw, order)
Add an action with the given discriminator, callable and arguments
  checkDuplicate(self, filename)
Check for duplicate imports of the same file.
  hasFeature(self, feature)
Check whether a named feature has been provided.
  path(self, filename)
Examples:
  processFile(self, filename)
Check whether a file needs to be processed
  provideFeature(self, feature)
Declare thata named feature has been provided.
  resolve(self, dottedname)
Resolve a dotted name to an object
    Inherited from object
  __delattr__(...)
x.__delattr__('name') <==> del x.name
  __getattribute__(...)
x.__getattribute__('name') <==> x.name
  __hash__(x)
x.__hash__() <==> hash(x)
  __new__(T, S, ...)
T.__new__(S, ...) -> a new object with type S, a subtype of T
  __reduce__(...)
helper for pickle
  __reduce_ex__(...)
helper for pickle
  __repr__(x)
x.__repr__() <==> repr(x)
  __setattr__(...)
x.__setattr__('name', value) <==> x.name = value
  __str__(x)
x.__str__() <==> str(x)

Class Variable Summary
    Inherited from GroupingContextDecorator
Implements __implemented__ = <implementedBy zope.configuration.conf...
ClassProvides __provides__ = <zope.interface.declarations.ClassProvide...
    Inherited from ConfigurationContext
ClassProvides __providedBy__ = <zope.interface.declarations.ClassProvi...

Generated by Epydoc 2.1 on Fri Jun 24 12:01:26 2005 http://epydoc.sf.net