[ZPT] Extending tal:condition, making metal:define
richard@bizarsoftware.com.au
richard@bizarsoftware.com.au
Thu, 05 Apr 2001 13:54:58 +1000
Evan Simpson wrote:
>
> Here's two ideas I had while using ZPT today:
>
> 1. Suppose that I want to replace a tag, but only if the replacement
> value exists, otherwise I want to keep the dummy text. Right now, this
> is the best I can do:
>
> <span tal:condition="exists:request/foo"
> tal:replace="request/foo"></span>
> <span tal:condition="not:exists:request/foo">The Text</span>
>
> Ditto for 'content' and 'attributes'. This isn't that bad, but I
> thought about extending 'condition', so that you could write:
>
> <span tal:condition="replace exists:request/foo"
> tal:replace="request/foo">The Text</span>
Another approach would be to have the condition be able to break out of the
processing for that tag if it fails, and not remove the tag. Something
like:
<span tal:condition="noremove:exists:request/foo"
tal:replace="request/foo">The Text</span>
Or maybe a whole new TAL statement is required?
<span tal:sticky_condition="exists:request/foo"
tal:replace="request/foo">The Text</span>
or
<span tal:lazy_replace="request/foo">The Text</span>
Perhaps what we really want is a way for replace to fail gracefully?
<span tal:replace="only_if_exists:request/foo">The Text</span>
My favourite is a tie between the last two... They're probably easier to
actually implement, and it's much more obvious what they're doing. Not that
we'd have to go with 'only_if_exists' as the actual keyword ;)
Richard
--
Richard Jones
richard@bizarsoftware.com.au
Senior Software Developer, Bizar Software (www.bizarsoftware.com.au)