Add built local::lib
[catagits/Gitalist.git] / local-lib5 / lib / perl5 / Git / PurePerl / Object / Tag.pm
CommitLineData
3fea05b9 1package Git::PurePerl::Object::Tag;
2use Moose;
3use MooseX::StrictConstructor;
4use Moose::Util::TypeConstraints;
5use namespace::autoclean;
6
7extends 'Git::PurePerl::Object';
8
9has 'kind' =>
10 ( is => 'ro', isa => 'ObjectKind', required => 1, default => 'tag' );
11has 'object' => ( is => 'rw', isa => 'Str', required => 0 );
12has 'tag' => ( is => 'rw', isa => 'Str', required => 0 );
13has 'tagger' => ( is => 'rw', isa => 'Git::PurePerl::Actor', required => 0 );
14has 'tagged_time' => ( is => 'rw', isa => 'DateTime', required => 0 );
15has 'comment' => ( is => 'rw', isa => 'Str', required => 0 );
16has 'object_kind' =>
17 ( is => 'rw', isa => 'ObjectKind', required => 0);
18
19my %method_map = (type => 'object_kind');
20
21sub BUILD {
22 my $self = shift;
23 my @lines = split "\n", $self->content;
24 while ( my $line = shift @lines ) {
25 last unless $line;
26 my ( $key, $value ) = split ' ', $line, 2;
27
28 if ($key eq 'tagger') {
29 my @data = split ' ', $value;
30 my ($email, $epoch, $tz) = splice(@data, -3);
31 my $name = join(' ', @data);
32 my $actor =
33 Git::PurePerl::Actor->new( name => $name, email => $email );
34 $self->tagger($actor);
35 my $dt= DateTime->from_epoch( epoch => $epoch, time_zone => $tz );
36 $self->tagged_time($dt);
37 } else {
38 my $method = $method_map{$key} || $key;
39 $self->$method($value);
40 }
41 }
42 $self->comment( join "\n", @lines );
43}
44
45__PACKAGE__->meta->make_immutable;
46