RFC: template engine [ was: Re: Implementing tables - advice wanted ]

ke han <>
Wed Jun 14 20:28:30 CEST 2006


On Jun 15, 2006, at 1:57 AM, Yariv Sadan wrote:

> Hi,
>
>> Indeed, these four characteristics seem to be all we need and is in
>> line with mine and others' intuition that a template engine should
>> _not_ be a Turing complete language.
>
> I would like to bring up one more point in favor of using Erlang as a
> template language: ehtml. With an Erlang template language, you could
> write code such as
>
> <%=
>       {ehtml, {table, [], {
>            lists:foldl(fun(E, A) ->
>                [{tr, [], {td, [{width, 20}], E#person.name}} | A]
>         end, [], dict:get(people, Data))}
>        }
>      },
> %>

according to StringTemplate syntax, your example can be written more  
clearly, IMO:

<table>
$people:row()$
</table>

where row() is defined as:
<tr><rd width=20>$attr.name$</td></tr>


- or -  if you feel like putting it together as one:

<table>
$people: {
	<tr><td width=20>$attr.name$</td></tr>
}$
</table>

I think if you read the pdf referred in this thread, you can see the  
rational for not using erlang as the template language but in favor  
of using erlang for all the behavior needed elsewhere such as the  
controllers, models, and renderers.  In other words, "if  
StringTemplate can't easily help you construct your view, then you  
shouldn't be coding that behavior in the view".

thanks, ke han


>
> in the template file. I think there's little doubt that this code does
> not belong in the controller, and that an ehtml tuple generated with
> pure Erlang is quite elegant.
>
> My 2c.
>
> Regards,
> Yariv




More information about the erlang-questions mailing list