in reply to Using DateTime together with Template::Toolkit

Update 2: I hacked myself a workaround by removing the overloaded string comparison of DateTime. This is horribly ugly and there must be a better way :-(

Yes, that way is to not put method calls in templates. Is it really so hard to use the following?

my $input = \'[% calendar %]'; $template->process($input, { calendar => DateTime->now->ymd(".") } );

I realize this is just a matter of style, but I really can't think of any good reason for such a simple operation not to occur in your program. Your program should assemble data, and your template should display it.

(Caveat: For efficiency reasons, sometimes it's better to pass an iterator to a template instead of a fully constructed data structure. But this sort of thing should be the exception, not the rule, IMHO.)

Replies are listed 'Best First'.
Re^2: Using DateTime together with Template::Toolkit
by lachoy (Parson) on Feb 28, 2005 at 23:03 UTC

    I can think of a great reason not to do it: datetime formatting is a display issue, not a data issue. They should be kept separate as much as possible otherwise you start doing things like putting your HTML construction alongside your data access. Down that path lies a maintenance nightmare.

    Chris
    M-x auto-bs-mode

Re^2: Using DateTime together with Template::Toolkit
by Corion (Patriarch) on Feb 28, 2005 at 22:31 UTC

    Of course, that could be a way to do it, but then, I like being able to make method/accessor calls on my objects - that's why I use Template::Toolkit and not HTML::Template. And I don't want to touch my precious Perl code just to change the formatting, especially for things as fragile as date separators.