Stas Bekman wrote:
foo = [ 1 2 3 ]; USE format_foo = format("%d %d %d"); format_foo(foo);
[...]
basically coercing the list ref into IV, instead of interpreting it as a list. Did I miss something obvious or is that a bug in that plugin?
It's more of a limitation in the design. TT treats all lists as list
references and doesn't have a nice way to return the contents of the list. i.e. you can't do the Perl equivalent of @$listref.
The problem is in the stash. Say you were to write a new list vmethod that returned the items in the list:
$context->define_vmethod( list => items => sub { @$_[0] } );
You would expect to use it like so:
format_foo(foo.items) # doesn't work in TT2
However, when the stash calls the vmethod (in fact any method, or sub),
it automatically folds a list of items into a reference to a list of items. foo.items returns a list, but format_foo() gets passed a list ref.
I originally did this to support as many existing Perl modules that may
return items. In hindsight, it was a bad design decision. It is useful
but causes action-at-a-distance that probably catches more people out than
it helps. The documentation has long since said that returning a naked
list of items (i.e. not a reference to a list) is frowned upon and may not be supported in future versions.
TT3 is that future version. As well as being able to write vmethods that return multiple items, as in the above example, I think I might also support '@' as a shortcut sigil.
format_foo(foo.items) # should work in TT3 format_foo(@foo) # also work in TT3
I'm using '@' in the same way as '$' is used in TT, to indicate interpolation
of a variable rather than being an indicator of the underlying data type, as it is in Perl. In TT is should be possible to put a '@' in front of any variable.
@hash # same as hash.items @list # same as list.items
@text # same as text.items
In certain cases, these will be no-ops, as per the current .list .hash and
.item vmethods that effectively cast one type to another.
tt2++ => andy++
p.s. i suppose that tt3 will be out really soon now ;)
__________________________________________________________________ Stas Bekman JAm_pH ------> Just Another mod_perl Hacker http://stason.org/ mod_perl Guide ---> http://perl.apache.org mailto:[EMAIL PROTECTED] http://use.perl.org http://apacheweek.com http://modperlbook.org http://apache.org http://ticketmaster.com
_______________________________________________ templates mailing list [EMAIL PROTECTED] http://lists.template-toolkit.org/mailman/listinfo/templates
