From: Chuck E. <ec...@mi...> - 2001-04-23 15:14:42
|
At 10:27 AM 4/23/2001 +0200, Arkaitz Bitorika wrote: >Have you had a look at Velocity (jakarta.apache.org/velocity)? It's a >reimplementation of the Webmacro idea by some of the Turbine people. I >think they have cleaned the language up a bit (no more braces! ;-)). Yeah, but they still use parentheses! :-) Thanks for the tip. Here is my review: Key docs are here: http://jakarta.apache.org/velocity/user-guide.html http://jakarta.apache.org/velocity/vtl-reference-guide.html webmacro & velocity both use $ to get values and # for all other directives. The syntax actually looks pretty clean and things like $1 and #10 are not interpreted. velocity supports multiline comments #* ... *# which is nice, although somewhat cryptic if you're not a C programmer. I wonder if a designer would feel more comfortable with #!-- with --# which looks equally hideous, but mirrors HTML's <!-- -->. I wonder why velocity chose curly braces for delineating variables in smooshed situations: ${vice}maniac, when webmacro chose ordinary parens. Hmmm, if you want a blank string rather than the variable name, you throw in an exclamation mark: $!email I find that a little cryptic, although admittedly compact (as most cryptic things are). If velocity can't find "email" for "$email", then it leaves it in place on the site. My HTML designers prefer to see a bigger "[Cannot find $email]" comment wrapped in a span whose style makes the text bold and red. This allows for easy debugging and even complaints by users. We would probably want an optional e-mail notification and/or logging for the production site. Velocity uses the classic shell convention of interpolating double quoted strings "$email" but not single quoted '$email' when these strings are used in expressions in directives. That's great for programmers, but not designers. Some of my designers have problems just grokking quotes in JavaScript. "#stop" is nice: "The #stop script element allows the template designer to stop the execution of the template engine and return. This is useful for debugging purposes." So is #macro which can help reduce a lot of typing in a template. Despite its name, I there is no 'macro' feature in webmacro. :-) A minus: "#set" always produces strings, even if the expression is mathematical. When using the value later in another mathematical expression, you have to convert it like this: $int.valueOf($a). I don't really see the point of that. Zope's DTML does batching and it's dtml-var tag supports things like what to insert if the field is blank, how many chars to truncate at, what to append if the value is truncated, etc. I don't these concepts of batching or advanced substitution operators in velocity or webmacro. They might also be missing to some extent in several of the Python templating modules posted recently, although most are still in my "thorough review queue". And last but not least: Looking at all those bloated Java examples sure makes me feel good that I discovered Python! Whew! |