# Fwd: Re: [Zope3-Users] test() in TALES in Zope3

```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
time, like:

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
function.

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
Zope3-users@zope.org
http://mail.zope.org/mailman/listinfo/zope3-users
```