[Zope3-dev] Re: adapter registration question
Chris Withers
chris at simplistix.co.uk
Mon Nov 13 10:27:01 EST 2006
Christian Theune wrote:
> The problem you have is to provide a specification for the 'str' interface.
There are a couple of problems here...
1. str is both a "function" and a "class"
2. I was to register the "function" str as an adapter for, say, the
"class" int to the "class" str, so there's not factory for the adapter,
since it's a function
> Let's create a marker interface that promises everything that 'str' does:
>
> class IString(zope.interface.Interface):
> """A marker for the 'str' interface."""
As discussed elsewhere, you shouldn't need the marker interface, as you
can adapt classes. However, given the edge-case nature of this, I can
believe there might be "bugs" to be found here...
> Now, you can setup your adapter like this:
>
> <adapter
> for="int"
> provides=".interfaces.IString"
> factory="str"/>
Well, that's not right ;-)
should be:
provide="str"
...and factory="str" is wrong for the reasons given above, or, put
differently, because str()(1) will tell you that strings aren't callable ;-)
cheers,
Chris
--
Simplistix - Content Management, Zope & Python Consulting
- http://www.simplistix.co.uk
More information about the Zope3-dev
mailing list