RFC: template engine [ was: Re: Implementing tables - advice wanted ]
Yariv Sadan
yarivvv@REDACTED
Wed Jun 14 07:26:29 CEST 2006
>
> I would personally avoid any imperative / non-declarative
> construct in a template language.
> Tons of template languages exist for PHP, etc. so one should at
> least look at them and reuse ideas from them.
I actually think there's something to learn from Drupal, the popular
open source PHP CMS. Drupal's default template engine used to be
xtemplate, which had a basic template language, but at a recent
version, Drupal switched to PHP template by default. The reason, as I
recall, is that the Drupal developers realized they already 'had' a
template language: PHP.
Ruby on Rails also has a template engine that embeds Ruby code.
I think one should consider making an Erlang template engine. It would
look like current Yaws pages, but different. For instance, let's say
your controller had this code
get_users(A) ->
[{person1, [{"name", "john"}, {age, 26}, {hobbies, [music, movies}]},
{person2, [{"name", "lisa"}, {age, 27}, {city, "new york"}]}].
The template could look like
<html>
<body>
<p>person1:</p>
<%
match({person1, Props} = Obj) ->
props:get(hobbies, Props).
%>
<p>person2:</p>
<%
match({person2, Props} = Obj) -> props:get(name, Props).
%>
<br>
<%= length(Data) %> people
</body>
</html>
I'm not sure that this syntax is really optimal (I just came up with
it), but I think there's an advantage to using a turing complete
template laugnage with a short learning curve :)
Best,
Yariv
More information about the erlang-questions
mailing list