[Checkins]
SVN: grokcore.component/branches/philikon-decl-dir-rules/src/grokcore/component/meta.py
Some science fiction of what we envision the declarative
syntax look like.
Philipp von Weitershausen
philikon at philikon.de
Sun May 4 16:02:30 EDT 2008
Log message for revision 86419:
Some science fiction of what we envision the declarative syntax look like.
Changed:
U grokcore.component/branches/philikon-decl-dir-rules/src/grokcore/component/meta.py
-=-
Modified: grokcore.component/branches/philikon-decl-dir-rules/src/grokcore/component/meta.py
===================================================================
--- grokcore.component/branches/philikon-decl-dir-rules/src/grokcore/component/meta.py 2008-05-04 20:01:38 UTC (rev 86418)
+++ grokcore.component/branches/philikon-decl-dir-rules/src/grokcore/component/meta.py 2008-05-04 20:02:29 UTC (rev 86419)
@@ -82,6 +82,17 @@
return True
+def default_global_utility_provides(factory, module, direct, **data):
+ if direct:
+ if provides is None:
+ martian.util.check_provides_one(factory)
+ provides = list(interface.providedBy(factory))[0]
+ else:
+ if provides is None:
+ provides = get_provides(factory)
+ return provides
+
+
class GlobalUtilityGrokker(martian.ClassGrokker):
component_class = grokcore.component.GlobalUtility
@@ -89,20 +100,15 @@
# happens, since it relies on the ITemplateFileFactories being grokked.
priority = 1100
- def grok(self, name, factory, module_info, config, **kw):
- provides = grokcore.component.provides.get(factory)
- direct = grokcore.component.direct.get(factory)
- name = grokcore.component.name.get(factory)
+ class directives:
+ direct = grokcore.component.direct.bind()
+ provides = grokcore.component.provides.bind(
+ default_global_utility_provides)
+ name = grokcore.component.name.bind()
- if direct:
- obj = factory
- if provides is None:
- martian.util.check_provides_one(factory)
- provides = list(interface.providedBy(factory))[0]
- else:
- obj = factory()
- if provides is None:
- provides = get_provides(factory)
+ def register(self, factory, config, direct, provides, name):
+ if not direct:
+ factory = factory()
config.action(
discriminator=('utility', provides, name),
More information about the Checkins
mailing list