A nice lesson here -- H::T set out to separate logic from display. Ever so often we itch to program just a tad bit more code in our presentation layer so we can "get away" with something, but by doing so we defeat the purpose of H::T. While 100% strict separation will never be possible (alternating colored rows in a table), and some logic may be necessary to avoid absolutely runaway explosion in template complexity and numbers, more often than not there is an elegant way around. Thanks Sam, for invaluable advice here.


On Feb 19, 2004, at 7:50 PM, Sam Tregar wrote:


On Fri, 20 Feb 2004, Mathew Robertson wrote:

I often find myself generating template code such as:

<TMPL_UNLESS error>
    <TMPL_UNLESS print>
        <TMPL_IF some_var>
            .... do something...
        </TMPL_IF>
    </TMPL_UNLESS>
</TMPL_UNLESS>

When I see stuff like that I go into my Perl code and whip up something like:

  <tmpl_if no_error_and_no_print>
    ... do something ...
  </tmpl_if>

  <tmpl_if no_error>
    ... do something else ...

  <tmpl_if error>
    ... do something else entirely ...
  </tmpl_if>

That way the template stays simple and I concentrate the complex logic
in the Perl code where it belongs.  If possible I try to find a way to
phrase each condition that doesn't involve boolean logic, which few
non-programmers fully understand.

The equivalent using H::T::E would be:

<TMPL_UNLESS EXPR="((defined error) or (defined print)) and ....">
    ... do something...
</TMPL_UNLESS>

You can write that a little simpler:


<TMPL_UNLESS EXPR="((error or print) and ...)">

both syntax's are reasonably ugly...

Beauty is in the eye of the beholder...


What about a syntax like:

<TMPL_IF !error,!print,some_var>

...which is proven by the fact that I find this much uglier than either of the two alternatives!

-sam


------------------------------------------------------- SF.Net is sponsored by: Speed Start Your Linux Apps Now. Build and deploy apps & Web services for Linux with a free DVD software kit from IBM. Click Now! http://ads.osdn.com/?ad_id=1356&alloc_id=3438&op=click _______________________________________________ Html-template-users mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/html-template-users



------------------------------------------------------- SF.Net is sponsored by: Speed Start Your Linux Apps Now. Build and deploy apps & Web services for Linux with a free DVD software kit from IBM. Click Now! http://ads.osdn.com/?ad_id=1356&alloc_id=3438&op=click _______________________________________________ Html-template-users mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/html-template-users

Reply via email to