[Zope-dev] Re: TALES idea: tuple unpacking
Shane Hathaway
shane@zope.com
Wed, 23 Jul 2003 17:15:48 -0400
Paul Winkler wrote:
> On Wed, Jul 23, 2003 at 02:04:51PM -0400, Fred L. Drake, Jr. wrote:
>
>>There are those that consider using python: expressions in ZPT should
>>be discouraged, primarily because it's yet another syntax for a web
>>developer to learn.
>>
>>I'm not necessarily one of them, but I am sympathetic with that
>>reasoning.
That's not my reasoning either. :-)
My feeling is that you should avoid mixing syntaxes in a single
document. The more syntaxes you mix, the more perfection you require of
developers. Take the following code:
<pre tal:content="python: text.replace('\\n', '<br /')" />
This code has at least four errors (one XML, one HTML, one ZPT, one
Python--can you spot them?), but it will work anyway without complaint.
This is hard to debug because it requires complete understanding and
perfect spelling of four languages at once: XML, ZPT, HTML, and Python.
I wholeheartedly agree that newcomers should learn Python as well as
ZPT, but there should be a clean separation of the two.
> My concern is that ZPT will grow so many conveniences that it will
> become easier to abuse it in the same way that DTML has been
> widely abused. New zope developers will then be more tempted to
> avoid python ("i don't have time to learn another language") and
> with the best intentions will do themselves a serious disservice:
> a lot of things will still be unnecessarily difficult compared to
> using python, and a lot of logic will be in templates where it
> doesn't belong.
I have a slightly different concern. You're concerned that people will
use path expressions when they could use Python expressions. I'm
concerned that people will use *any* kind of complicated expressions
instead of Python code blocks. To me, the choice between path
expression and Python expression isn't very meaningful; either way I'm
putting logic in a template, and if it's too complicated, it doesn't
belong there. The better goal is to move complicated logic out of
templates and into Python code blocks, don't you think?
I know of two ways to avoid writing complicated expressions in templates:
1. Move complicated expressions into Python code blocks.
2. Provide a simpler equivalent for complicated expressions.
Prefixes in the middle of path expressions attacks #2.
Shane