[Helma-user] New Additions to Template.js

Maksim Lin for technical support mailling lists maksim_lin at ngv.vic.gov.au
Mon Apr 16 09:51:33 CEST 2007


Hi Juerg,

Its great having approximate feature parity between JSTL and skins since it will make it much easier using either or both of them.

It don't mind the dollar sign syntax and infact think it does make things more clearer - but then again I'm also a frequent velocity user.

I don't think I would use the prefix / suffix on loops but then that's a personal style preference more then anything.

Being able to access the value of the loop counter would be very handy - perhaps you could maek a builtin "counter variabel like velocity uses? 
Also I think it is useful to have functionality to iterate over objects (hashs) as well as Arrays, since often I want to didpaly a html table or list of values of an object and I don't worry about ordering/sorting it.

Also Juerg, would it be possible to agree on freezing on a particular version of the syntax? as I currently have a project underway where I am using JTSL and another about to begin and would like to have a 'stable' version on which I could depend on rather then having to keep going back and updating my templates. 

Thanks,

Maks.

> -----Original Message-----
> From: helma-user-bounces at helma.org 
> [mailto:helma-user-bounces at helma.org] On Behalf Of Juerg Lehni
> Sent: Sunday, 15 April 2007 05:15
> To: Helma User Mailing List
> Subject: Re: [Helma-user] New Additions to Template.js
> 
> Yet another update:
> 
> I added prefix / suffix / default to conditional macros and 
> loops, and a new feature called separator to loop.
> 
> This now allows things like:
> 
> <% foreach $value in [1, 2, 3] prefix="[ " suffix=" ]" 
> separator=", " %>
>    <%= $value %>
> <% end %>
> 
> Result: [1, 2, 3]
> 
> <% if param.greetings prefix="Hello" %>
>    World
> <% end %>
> 
> Result: Hello World
> 
> Also note that parantheses are not needed any longer in if / 
> elseif / foreach, but can still be used.
> 
> I think these additions are very useful.
> 
> The next feature will be to somehow allow $value in the loop 
> above to know where it is... I still have not decided how 
> this can be done nicely.
> 
> The changes lead to another clean up of the code, which seems 
> to get less of a hack with each addition.
> 
> Download at the usual place:
> 
> http://dev.helma.org/wiki/JavaScript+Template+Engine/
> 
> Jürg
> 
> On 13 Apr 2007, at 12:29, Juerg Lehni wrote:
> 
> > Hello,
> >
> > I just upploaded a largely refactored and overhauled Template.js
> >
> > http://dev.helma.org/wiki/JavaScript+Template+Engine/
> >
> > This incorperates most of the skin additions described here:
> >
> > http://dev.helma.org/wiki/New+Skin+Features+in+Helma+1.6/
> >
> > Generally, I think althought the code became longer, it 
> should be much 
> > more readable. There are still many regexps in there, but 
> that is just 
> > the way to do it and still get a half-way decent speed for 
> parsing in 
> > JS. All these constructs could be easily replaced with 
> something more 
> > understandable in Java. I am very pleased with the 
> efficiency of the 
> > new macr parser in Template.prototype.parseMacro and its private 
> > functions, for those who want to have a closer look.
> >
> > Some of the features / changes:
> >
> > - Local variables now need to have a $ in front of them, so 
> you will 
> > probably have to change some of your templates. Right now, 
> the new way 
> > to do things is:
> >
> >    <% foreach ($value in list) %> instead of <% foreach (value in
> > list) %>
> >    <% $value = 10 %> instead of <% set value = 10 %>
> >
> > This is not finalized though, i am simply playing around 
> with notation 
> > and am very curious to hear the thoughts of the Template.js users.
> >
> > - Filter chains work, and hopefully the same way as in 
> Helma. I am not 
> > so sure about all the details, e.g. where and when to 
> append prefix / 
> > suffix, but will look at this soon to make sure it does the same.
> >
> > - Neste macros are supported. You can still write something like <% 
> > macro value=param.otherValue %> and for simple things, that is the 
> > recommended way, but you can also go and render a sub template into 
> > the parameter of another macro. neat!
> >
> > - Unnamed parameters are there and work in the same way as in Helma.
> >
> > - Sub templates are implemented in a new way, closly mimicing sub
> > skins:
> >
> > <% #name %>
> > This is a sub-template. It can call <% macros %> and write <%= 
> > param.value %> too!
> > Empty lines before and after it are automatically removed.
> >
> > <% #greedy +%>
> > This is another sub-template. As apposed to the one abovce, 
> this one 
> > keeps the empty lines due to the + at the end.
> >
> > Template.js also adds a macro for rendering templates and 
> > subtemplates. All this should work:
> >
> > <% this.template "#sub" value="variables" %> <% this.template 
> > "main#sub" value="variables" %> <% this.template "main" 
> > value="variables" %>
> >
> > Despite my first somewhat negative reactions to these I now 
> started to 
> > see the advantages too, and have actually come to the 
> conclusion that 
> > it is not a bad thing to drop nested content in tags.
> >
> > And while I was at it, I thought it would be neat to offer a 
> > possibility to render templates directly into a scope variable:
> >
> > <% $text %>
> > Render this text into '$text'. Again, <% macros %> can be called.
> >
> > This also creates a sub template of the same name, without 
> the $. And 
> > the variable $text then just contains the rendered result in the 
> > example above. This is actually what gave me the idea to only use $ 
> > for all variables, but I am not so sure about that decision yet...
> >
> > I am curious to here what the users of Template.js think about all 
> > these changes.
> >
> > Will anybody miss the possibility to have nested content?
> >
> > I hope you enjoy this.
> >
> > I am looking forward to recieving some feedback.
> >
> > Jürg
> > _______________________________________________
> > Helma-user mailing list
> > Helma-user at helma.org
> > http://helma.org/mailman/listinfo/helma-user
> 
> _______________________________________________
> Helma-user mailing list
> Helma-user at helma.org
> http://helma.org/mailman/listinfo/helma-user
> 
> 
> 


More information about the Helma-user mailing list