[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