For my own use I've been uncommenting the patch since he applied it :)
Something worth noting that I brought up at the time of the patch:
http://template-toolkit.org/pipermail/templates/2003-December/005406.html
Template::Iterator expects an 'array object' to have an as_list method.
I had to add one to my class to keep everything happy. This isn't
something that interferes with the patch, but does interfere with anyone
who wishes to use the new behavior.
-Stephen
Andy Wardley wrote:
I just got bitten (again) by a limitation in Template::Stash. Stephen
Howard provided a patch to fix it and I added it, but left it commented
out pending comments from anyone (and also pending the tuits to dive
into the XS Stash to make the same fix).
http://template-toolkit.org/pipermail/templates/2003-December/005417.html
The essence of the problem is this: if you have an object (list or hash)
which doesn't implement the method that you call, then it should fall
back on hash/list vmethods, or accessing the numerical item you asked
for in a list.
[% hashobject.keys %] # should call hash vmethod, but doesn't
[% listobject.first %] # ditto list vmethod
[% listobject.3 %] # should return $listobject->[3]
Needless to say, the problem is that it doesn't, but with Stephen's
patch, it does (in the Perl Template::Stash at least).
Well we don't seem to have had any comments since then, and with fresh
bite marks to show for it, I'm going ahead and activating it unless I
hear any blood-curdling screams to the contrary.
I'll also have a look at updating the XS Stash to do the same thing
so you may be hearing a few blood-curdling screams from me :-)
While I'm there, I'm also planning to "fix" the hash.list and list.hash
methods to Do The Right Thing.
For some totally half-baked reason that now I can fathom not, I made
the hash.list method return a stupidly complex list of hash references:
{ pi => 3.14 } => [ { key ='pi', value='3.14' } ]
and the list.hash method return an equally useless hash:
[ 3.14, 2.718 ] => { 0 => 3.14, 1 => 2.718 }
Having just activated Stephen's patch, these vmethods kicked in and
made a handful of tests failed because they were expecting some kind
of sensible values returned and instead got this crack-fuelled nonsense.
So I'm proposing that I fix them too and make them do what they should
always have done - a straight conversion between list and hash
hash.list => [ %$hash ]
list.hash => { @$list }
I realise that it might break code that relies on the old behaviour,
but I think it's for the best in the long run.
Any objections?
A
_______________________________________________
templates mailing list
[email protected]
http://lists.template-toolkit.org/mailman/listinfo/templates
_______________________________________________
templates mailing list
[email protected]
http://lists.template-toolkit.org/mailman/listinfo/templates