[Zope-Checkins] CVS: Zope/lib/python/ComponentArchitecture - IToIRegistry.py:1.1.2.2
Shane Hathaway
shane@digicool.com
Tue, 18 Sep 2001 17:47:52 -0400
Update of /cvs-repository/Zope/lib/python/ComponentArchitecture
In directory cvs.zope.org:/tmp/cvs-serv454
Modified Files:
Tag: ComponentArchitecture-branch
IToIRegistry.py
Log Message:
Checkpoint
=== Zope/lib/python/ComponentArchitecture/IToIRegistry.py 1.1.2.1 => 1.1.2.2 ===
self._registerAll(require, provide, c, provide)
+ def _find(self, require, provide):
+ return self._reg.get((require, provide), None)
+
def get(self, ob_interface, provide):
"""
Finds a registered component that provides the given interface.
Returns None if not found.
"""
- c = self._reg.get((ob_interface, provide), None)
+ c = self._find(ob_interface, provide)
if c is not None:
return c[1]
bases = getattr(ob_interface, '__bases__', ())
@@ -53,6 +56,27 @@
if c is not None:
return c
return None
+
+
+class IToIRegistryWithLabels (IToIRegistry):
+ """
+ Supports the use of label interfaces for inputs.
+ """
+ def register(self, require, provide, c):
+ '''
+ Registers a component.
+ '''
+ if isinstance(require, LabelInterface):
+ # register the name instead of the interface.
+ require = require.getName()
+ self._registerAll(require, provide, c, provide)
+
+ def _find(self, require, provide):
+ if isinstance(require, LabelInterface):
+ # Look up the name instead of the interface.
+ return self._reg.get((require.getName(), provide), None)
+ else:
+ return self._reg.get((require, provide), None)