File Coverage

blib/lib/Astro/App/Satpass2/FormatTime/POSIX/Strftime.pm
Criterion Covered Total %
statement 33 36 91.6
branch 7 10 70.0
condition 0 3 0.0
subroutine 9 9 100.0
pod 1 1 100.0
total 50 59 84.7


line stmt bran cond sub pod time code
1             package Astro::App::Satpass2::FormatTime::POSIX::Strftime;
2              
3 20     20   339 use 5.008;
  20         68  
4              
5 20     20   133 use strict;
  20         63  
  20         402  
6 20     20   119 use warnings;
  20         43  
  20         539  
7              
8 20     20   120 use parent qw{ Astro::App::Satpass2::FormatTime };
  20         52  
  20         91  
9              
10 20     20   10270 use Astro::App::Satpass2::FormatTime::Strftime;
  20         64  
  20         1287  
11 20     20   135 use Astro::App::Satpass2::Utils qw{ ARRAY_REF @CARP_NOT };
  20         46  
  20         1570  
12 20     20   158 use POSIX ();
  20         49  
  20         8628  
13              
14             our $VERSION = '0.051_01';
15              
16             sub format_datetime {
17 618     618 1 1390 my ( $self, $tplt, $time, $gmt ) = @_;
18 618         1507 $time = $self->__round_time_value( $time );
19 618 100       2169 defined $gmt or $gmt = $self->gmt();
20 618         1046 my @parts;
21 618 100       1641 if ( ARRAY_REF eq ref $time ) {
    50          
22 330         483 @parts = @{ $time };
  330         749  
23             } elsif ( $gmt ) {
24 288         1327 @parts = gmtime $time;
25             } else {
26 0         0 my $tz = $self->tz();
27             defined $tz
28             and $tz ne ''
29 0 0 0     0 and local $ENV{TZ} = $tz;
30 0         0 @parts = localtime $time;
31             }
32 618         23856 return POSIX::strftime( $tplt, @parts );
33             }
34              
35             {
36             my %adjuster = (
37             year => sub { $_[0][5] = $_[1] - 1900; return },
38             month => sub { $_[0][4] = $_[1] - 1; return },
39             day => sub { $_[0][3] = $_[1]; return },
40             hour => sub { $_[0][2] = $_[1]; return },
41             minute => sub { $_[0][1] = $_[1]; return },
42             second => sub { $_[0][0] = $_[1]; return },
43             );
44              
45             sub __format_datetime_width_adjust_object {
46 390     390   840 my ( undef, $obj, $name, $val ) = @_; # Invocant unused
47 390 100       872 $obj or $obj = [ 0, 0, 0, 1, 0, 200 ];
48 390         1139 $adjuster{$name}->( $obj, $val );
49 390         850 return $obj;
50             }
51              
52             }
53              
54             1;
55              
56             __END__