Thanks! I forwarded the mail as a patch to template-toolkit mailing list.

On 9/23/06, Daisuke Maki <[EMAIL PROTECTED]> wrote:
Smells like a TT problem.
The line in question at Template::Stash is reads:

   my $atroot  = ($root eq $self);

This logic exists so such that TT knows if it's looking at the implicit
stash context, or a child element in the stash.

The same logic, if I'm not mistaken, in the XS version reads:

   atroot = sv_derived_from(root, TT_STASH_PKG);

So if I change line 685 of Stash.pm to

   my $atroot  = eval { $root->isa(__PACKAGE__) };

Voila!

   [EMAIL PROTECTED] daisuke$ perl test.pl
   # DateTime 0.34
   # Template 2.15
   ok 1 - ok
   ok 2 - ok
   1..2

--d

Tatsuhiko Miyagawa wrote:
> Hi,
>
> Passing DateTime object to TT (Template Toolkit) without Stash::XS
> built, DateTime overloading gives you an annoying error like
> following. (See DATA section for the result on my box.)
>
> Is it something fixable on the user's end, or simply the bug of
> DateTime, or TT?
>
> #!/usr/bin/perl
> use strict;
> use warnings;
> use DateTime;
> use Template;
> use Template::Stash;
> use Template::Stash::XS;
> use Test::More 'no_plan';
>
> diag "DateTime $DateTime::VERSION";
> diag "Template $Template::VERSION";
>
> my $tmpl = <<TMPL;
> today is [% date.ymd %]
> TMPL
>
> for my $stash ( Template::Stash->new, Template::Stash::XS->new ) {
>    my $tt = Template->new({ STASH => $stash });
>    ok( $tt->process(\$tmpl, { date => DateTime->now }, \my $out),
> $tt->error || "ok");
> }
>
> __END__
> # DateTime 0.30
> # Template 2.14
> not ok 1 - undef error - Cannot compare a datetime to a regular scalar
> at /usr/local/lib/perl/5.8.4/DateTime.pm line 1435.
> #
> #   Failed test 'undef error - Cannot compare a datetime to a regular
> scalar at /usr/local/lib/perl/5.8.4/DateTime.pm line 1435.
> # '
> #   in /home/miyagawa/tmp/tt-datetime.pl at line 19.
> ok 2 - ok
> 1..2
> # Looks like you failed 1 test of 2.
>
>




--
Tatsuhiko Miyagawa

Reply via email to