[Checkins]
SVN: grokcore.component/branches/jw-philipp-using-ndir-directives/src/grokcore/component/
Using new-style directives for provides and direct.
Jan-Wijbrand Kolman
janwijbrand at gmail.com
Fri May 2 11:25:14 EDT 2008
Log message for revision 86101:
Using new-style directives for provides and direct.
Changed:
U grokcore.component/branches/jw-philipp-using-ndir-directives/src/grokcore/component/directive.py
U grokcore.component/branches/jw-philipp-using-ndir-directives/src/grokcore/component/meta.py
-=-
Modified: grokcore.component/branches/jw-philipp-using-ndir-directives/src/grokcore/component/directive.py
===================================================================
--- grokcore.component/branches/jw-philipp-using-ndir-directives/src/grokcore/component/directive.py 2008-05-02 15:24:53 UTC (rev 86100)
+++ grokcore.component/branches/jw-philipp-using-ndir-directives/src/grokcore/component/directive.py 2008-05-02 15:25:14 UTC (rev 86101)
@@ -13,6 +13,7 @@
##############################################################################
"""Grok directives.
"""
+import grokcore.component
from zope.interface.interfaces import IInterface
@@ -29,6 +30,8 @@
ClassOrModuleDirectiveContext)
from martian import util
+from martian import ndir
+
class GlobalUtilityDirective(MultipleTimesDirective):
def check_arguments(self, factory, provides=None, name=u'',
direct=False):
@@ -44,11 +47,11 @@
def __init__(self, factory, provides=None, name=u'', direct=None):
self.factory = factory
if direct is None:
- direct = util.class_annotation(factory, 'grok.direct', False)
+ direct = grokcore.component.direct.get(factory)
self.direct = direct
if provides is None:
- provides = util.class_annotation(factory, 'grok.provides', None)
+ provides = grokcore.component.provides.get(factory)
self.provides = provides
if name is u'':
@@ -81,10 +84,16 @@
name = SingleTextDirective('grok.name', ClassDirectiveContext())
context = InterfaceOrClassDirective('grok.context',
ClassOrModuleDirectiveContext())
-provides = InterfaceDirective('grok.provides', ClassDirectiveContext())
baseclass = MarkerDirective('grok.baseclass', ClassDirectiveContext())
global_utility = GlobalUtilityDirective('grok.global_utility',
ModuleDirectiveContext())
title = SingleTextDirective('grok.title', ClassDirectiveContext())
order = OrderDirective('grok.order', ClassDirectiveContext())
-direct = MarkerDirective('grok.direct', ClassDirectiveContext())
+
+direct = ndir.Directive(
+ 'grok', 'direct', ndir.CLASS, ndir.ONCE, default=False,
+ arg=ndir.NO_ARG)
+
+provides = ndir.Directive(
+ 'grok', 'provides', ndir.CLASS, ndir.ONCE, default=None,
+ validate=ndir.validateInterface)
Modified: grokcore.component/branches/jw-philipp-using-ndir-directives/src/grokcore/component/meta.py
===================================================================
--- grokcore.component/branches/jw-philipp-using-ndir-directives/src/grokcore/component/meta.py 2008-05-02 15:24:53 UTC (rev 86100)
+++ grokcore.component/branches/jw-philipp-using-ndir-directives/src/grokcore/component/meta.py 2008-05-02 15:25:14 UTC (rev 86101)
@@ -25,6 +25,7 @@
from grokcore.component.util import determine_module_component
from grokcore.component.util import determine_class_component
from grokcore.component.util import check_provides_one
+from grokcore.component import directive
def get_context(module_info, factory):
return determine_class_component(module_info, factory,
@@ -42,7 +43,8 @@
default)
def get_provides(factory):
- provides = util.class_annotation(factory, 'grok.provides', None)
+ provides = directive.provides.get(factory)
+
if provides is None:
util.check_implements_one(factory)
provides = list(interface.implementedBy(factory))[0]
@@ -67,7 +69,7 @@
adapter_context = get_context(module_info, factory)
provides = get_provides(factory)
name = get_name(factory)
-
+
config.action(
discriminator=('adapter', adapter_context, provides, name),
callable=component.provideAdapter,
@@ -82,7 +84,7 @@
def grok(self, name, factory, module_info, config, **kw):
provides = get_provides(factory)
name = get_name(factory)
-
+
check_adapts(factory)
for_ = component.adaptedBy(factory)
@@ -102,8 +104,8 @@
priority = 1100
def grok(self, name, factory, module_info, config, **kw):
- provides = util.class_annotation(factory, 'grok.provides', None)
- direct = util.class_annotation(factory, 'grok.direct', False)
+ provides = directive.provides.get(factory)
+ direct = directive.direct.get(factory)
name = get_name(factory)
if direct:
More information about the Checkins
mailing list