Rob Nagler wrote:
> [Skirting on the edge of YATW. :-]
I certainly don't mean to have a templating war. I'm just trying to
figure out what the difference is between these approaches and if
there's something I've been missing that I should consider adding to
future applications.
> Here's your expanded example in widgets:
>
> String(Prose(<<'EOF'), 'basic_info_font');
> Hello String(['Model.User', 'first_name']);!<br>
> If(['Model.AccountList', '->get_result_set_size'],
> Join([
> "You have these accounts:<br>",
> Table('Model.AccountList', [
> 'name',
> 'balance',
> ]),
> ]),
> );
> EOF
If your String widget can accept other widgets recursively like this,
then our examples are equivalent. I thought it was limited to a simple
value.
> Unless I
> missing something, the template example won't align properly in HTML.
> This is a significant semantic difference between FOREACH and
> Table.
I just didn't put in any fancy HTML in my example. I could have put in
table tags right there, or made a macro if that table gets repeated a
lot. Looks to me like they work the same. In TT, I would probably use
macros or small templates (possibly defined in this same template file
at the top) for little repeating chunks, and filters or plugins for
things with more brains, like the String widget that decides whether or
not it needs to print FONT tags.
- Perrin