/usr/local/CPAN/VCI/VCI/VCS/Hg/Committable.pm
package VCI::VCS::Hg::Committable;
use Moose::Role;
use DateTime;
sub _build_time {
my $self = shift;
my $text = $self->project->x_get(['raw-rev', $self->revision]);
$text =~ /^# Date (\d+) (-)?(\d+)$/ms;
my ($time, $minus, $offset_seconds) = ($1, $2, $3);
my $offset_hours = $offset_seconds / 3600;
my $offset_fraction = $offset_hours - int($offset_hours);
my $offset_minutes = $offset_fraction * 60;
# Minus means plus, and absence of minus means...minus.
my $direction = $minus ? '+' : '-';
my $zone = $direction . sprintf('%02u%02u', $offset_hours, $offset_minutes);
return DateTime->from_epoch(epoch => $time, time_zone => $zone);
}
1;