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