Its interesting that thread of discussion has been raised.... I have been
using H::T for years - as a result, I have added most of these features to
my own instance. Just this week I finished testing a new H::T::Bundle
module which I was going to upload to CPAN,
Features in my instance:
- some bugs fixed
- support for "die_on_unset_params" which causes the output() to die if the
programmer hasn't called param(somevar =>...) when 'somevar' exists in the
template
- big performance enhancement in the output() phase
- recursive templates (at a performance hit)
- output() by reference
- TMPL_ELSIF
- TMPL_REQUIRE - like TMPL_INCLUDE but only once ala Perl 'require'.
- support for simple perl-array based loops
- the ability to sub-class and so hook-in to create new TMPL_xxx semantics
- dynamic loading of ESCAPE modules
- 'includes_debug' which matches the other debug modes.
- profiling support
- preliminary support for objects, aka some_obj.some_attr, without having to
do this yourself
- support for "intrinsic_vars" such as '__type__' and '__filename__'
- '__even__' and '__outer__' (TMPL_UNLESS __odd__ just seems wrong...)
- updated the docs
- updated some of the test cases.
- utf8 safe
TODO:
- support for automatic length param on loops
- more test cases for objects, as I'm not 100% sure I got everything.
- TMPL_LOOP support for non-hash rows.
- more test cases which covers the use-cases for reftype()
Via the H::T::Bundle sub-class I added:
- TMPL_SET
- support for pre-written filters (about a dozen so far)
- <% somevar %> implemented as a filter
- sane H::T defaults, as I think global_vars and loop_context_vars should be
the default
- Environmental variables in templates
A note regarding the "format" option - this could be implemented in a
sub-class using a new keyword, as in <TMPL_STRING var format=blah"> and/or
<TMPL_PRECISION var precision=blah>. ie: extending TMPL_VAR is possible,
but given the hug number of possibilities, it might be easier to do
something similar to <TMPL_CATGETS var> which is a implementation of the
gnus catgets() call, but from within templates (or just use a real
translation engine either via preprocessing or real-time ).
Thoughts?
cheers,
Mathew Robertson
------------------------------------------------------------------------------
Xperia(TM) PLAY
It's a major breakthrough. An authentic gaming
smartphone on the nation's most reliable network.
And it wants your games.
http://p.sf.net/sfu/verizon-sfdev
_______________________________________________
Html-template-users mailing list
Html-template-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/html-template-users