Re: [Templates] Template Toolkit and DateTime::Duration

[prev] [thread] [next] [Date index for 2004/12/11]

From: Andy Wardley
Subject: Re: [Templates] Template Toolkit and DateTime::Duration
Date: 09:02 on 11 Dec 2004
Arshavir Grigorian wrote:
>I am trying to access a DateTime::Duration method from within my TT 
>template and getting an getting the following exception:

I don't see any problem.  Here's my test script:

  use strict;
  use warnings;
  use Template;
  use DateTime::Duration;

  my $template = Template->new();
  my $duration = DateTime::Duration->new( years => 3 );

  $template->process(\*DATA, { duration => $duration })
      || die $template->error();

  __DATA__
  [% IF duration.years -%]
  *  The duration is: [% duration.years %] years
  [% ELSE -%]
  *  The duration is less than a year.
  [% END -%]

I get the correct output and no exception.  Can you "fix" my example to 
demonstrate the problem?

> If we replace it with the following, the logic 
> will short circuit and we will never have to compare apples to oranges.
> 
> my $atroot = ((ref ($root) eq ref ($self)) && ($root eq $self));
> 
> It should not break anything else. Right?

Who knows?  That's what the test suite is for.  :-)

If you have something that looks like a bug, you need to write a short test 
like the above that clearly demonstrates the problem, add it to the test 
suite, apply the fix, and then run the test suite to prove that the fix 
fixes the bug and doesn't break anything else.

But I'm not in favour of adding a hack in TT to work around one particular
module's problems, especially when it's adding extra code that will be 
executed every time every node of every dotted variable is evaluated in 
every template in every TT installation across the World.  That's an awful 
lot of dotops.  :-)

It would be much easier to fix the real problem in DateTime::Duration
which overloads <=> and cmp to _compare_overload() but then dies when
it actually gets called:

  sub _compare_overload
  {
      die "DateTime::Duration does not overload comparison.  See the documentation on the compare() method for details.";
  }


A


_______________________________________________
templates mailing list
templates@xxxxxxxxxxxxxxxx.xxx
http://lists.template-toolkit.org/mailman/listinfo/templates

[Templates] Template Toolkit and DateTime::Duration
Arshavir Grigorian 00:02 on 08 Dec 2004

Re: [Templates] Template Toolkit and DateTime::Duration
Arshavir Grigorian 02:03 on 08 Dec 2004

Re: [Templates] Template Toolkit and DateTime::Duration
Arshavir Grigorian 16:58 on 08 Dec 2004

Re: [Templates] Template Toolkit and DateTime::Duration
Arshavir Grigorian 19:59 on 09 Dec 2004

Re: [Templates] Template Toolkit and DateTime::Duration
Andy Wardley 09:02 on 11 Dec 2004

Re: [Templates] Template Toolkit and DateTime::Duration
Arshavir Grigorian 17:28 on 14 Dec 2004

Generated at 08:56 on 15 Mar 2005 by mariachi v0.52