package Template::Plugin::DateTimeFormat;
$Template::Plugin::DateTimeFormat::VERSION = '0.04';
use 5.006;
use strict;
use warnings;
use DateTime;
use Class::Load;
use base 'Template::Plugin';
sub new {
my ($class, $context, $formatter_class, $new_args, $format_args) = @_;
Class::Load::load_class($formatter_class || die 'need class name');
my @new_args = ref $new_args eq 'ARRAY' ? @$new_args : $new_args;
if ($format_args) {
$format_args = [ $format_args ] unless ref $format_args eq 'ARRAY';
}
bless {
_CONTEXT => $context,
formatter => $formatter_class->new(@new_args),
format_args => $format_args || [],
}, $class;
}
sub format {
my ($self, $date) = @_;
my $fmt = $self->{formatter};
my @args = @{$self->{format_args}};
return $fmt->format_datetime($date, @args);
}
1;