On Wed, 01 Feb 2006 19:15:13 +0100, "Igor Stroh" <[EMAIL PROTECTED]> said:
> Michael Dudzik wrote:
> > On Wed, 01 Feb 2006 09:07:17 +0100, "Andreas Jung"
> >>>in Zope2 there's a test() method that can be used in TAL (*). Is there
> >>>something comparable in Zope3?
> >>>I know how to write such a method but how to make it available in the
> >>>namespace of TALES-"python:"-expressions? I would like to write
> >>>expressions like this:
> >>><div tal:attributes="class python: 'foo' + test(condition == True,'
> >>>bar','')" />
> >>You can write this in Python as
> >> condition and true_expression or false_expression
> > That doesn't work under some conditions:
> > C and A or B where C is a boolean
> > if C is false it evaluates to B
> > if C is true it evaluates to A EXCEPT when bool(A) == false
> > example:
> > C and None or 7 ALWAYS evaluates to 7
> Just make it 'not C and 7 or None' :)
Sure, but what about when you don't know the boolean value ahead of
C and f(x) or g(x)
On the other hand, (g(x), f(x))[C] works every time
To be fair, both g(x) and f(x) are evaluated while
f(x) if C else g(x) # python 2.5, only evaluates the appropriate
Still, I mostly spoke up because if one starts to use an idiom like:
python:C and 'somestring' or 'anotherstring'
you have to realize that
python:C and '' or 'anotherstring'
will fail. An idiom that breaks so easily doesn't seem so useful.
Zope3-users mailing list