This file is indexed.

/usr/share/perl5/Template/Plugin/DateTime/Format.pm is in libtemplate-plugin-datetime-format-perl 0.03-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
package Template::Plugin::DateTime::Format;
$Template::Plugin::DateTime::Format::VERSION = '0.03';
# ABSTRACT: format DateTime objects from inside TT with DateTime::Format-style formatters

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;
    { no warnings;
      $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;

__END__

=head1 NAME

Template::Plugin::DateTime::Format - format DateTime objects from inside TT with DateTime::Format-style formatters

=head1 SYNOPSIS

   [% USE f = DateTime::Format('DateTime::Format::Strptime', { pattern => "%T" }) %]
   [% f.format(datetime_object) %]

=head1 DESCRIPTION

Oftentimes, you have a L<DateTime|DateTime> object that you want to
render in your template.  However, the default rendering
(2008-01-01T01:23:45) is pretty ugly.  Formatting the DateTime with a
L<DateTime::Format|DateTime::Format> object is the usual solution, but
there's usually not a nice place to put the formatting code.

This plugin solves that problem.  You can create a formatter object
from within TT and then use that object to format DateTime objects.

=head2 CREATING AN OBJECT

Creating a formatter instance is done in the usual TT way:

  [% USE varname = DateTime::Format( ... args ... ) %]

This creates a new formatter and calls it C<varname>.

The constructor takes up to three arguments.  The first argument is
the name of the formatter class.  It is required, and the named class
must follow the DateTime::Format API.  An exception will be thrown if
the class cannot be loaded.

The second argument is a reference to pass
to the formatter's constructor.  If it is an array reference, the
array will be dereferenced before being passed to C<new> as C<@_>.
Otherwise, the single reference is passed to the constructor.

The third argument is optional and is the rest of C<@_> to pass to
C<format_datetime> after the DateTime object.  I don't know if this is
actually allowed by the API, but I figured it might come in handy.

=head2 FORMATTING DATES

Once you've created the object, invoke the C<format> method with the
DateTime object you'd like to format.  The result of
C<format_datetime> is returned.

=head1 METHODS

=head2 new

Called by TT to create a new formatter.

=head2 format($datetime)

Formats C<$datetime>.

=head1 REPOSITORY

L<https://github.com/neilbowers/Template-Plugin-DateTime-Format>

=head1 AUTHOR

Jonathan Rockway C<< <jrockway@cpan.org> >>

=head1 COPYRIGHT AND LICENSE

Copyright (c) 2008 Jonathan Rockway.

This module is free software.  You may redistribute it under the same
terms as perl itself.