-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Chris Withers wrote:
> Stephan Richter wrote:
>> On Friday 17 November 2006 03:43, Chris Withers wrote:
>>> What do you suggest I do when the adapter needs to know the name it was
>>> registered for?
>> You can make the name part of the adapter API.
>
> Not sure what you mean by this?
>
>> However, I would suggest revising the design; I have never come across a
>> scenario where I wanted the name of the adapter be known within the adapter.
>> This seems to be a recipe for trouble.
>
> I don't think it'll be a common pattern, but it doesn't feel right to me
> that a named adapter (ie: one registered with a specific name) has no
> way of finding out what name it has been registered with...
The classic pattern here would be to create the "guts" of your adapter
as a class, and then curry the "factory" part which governs
instantiation of the class. You could double-curry the factory, as
well, if you wanted to avoid the class. E.g.:
class MyNamedAdapter(object):
def __init__(self, context, name):
self.context = context
self.name = name
def causeBrowToSweat(self):
return 'Sweating: %s' % self.name
def MNA_factory_maker(name):
def _curried(context, name=name):
return MyNamedAdapter(context, name)
return _curried
for name in ('vindaloo', 'madras', 'tiki_masala'):
globals()[name] = MNA_factory_maker(name)
and then in ZCML:
<adapter for=".interfaces.IChicken"
provides=".interfaces.ICurry"
name="vindaloo"
factory=".adapters.vindaloo" />
Tres.
- --
===================================================================
Tres Seaver +1 202-558-7113 [EMAIL PROTECTED]
Palladion Software "Excellence by Design" http://palladion.com
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2.2 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD8DBQFFa6jg+gerLs4ltQ4RAoSlAJwJvyp3gWfI72Pt+t2wiE5ozPFQxQCfWxwU
yVagPjfHMhjbK7wfeDghjI8=
=7BoL
-----END PGP SIGNATURE-----
_______________________________________________
Zope3-dev mailing list
[email protected]
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com