File Coverage

blib/lib/Time/Str.pm
Criterion Covered Total %
statement 37 39 94.8
branch 3 6 50.0
condition n/a
subroutine 11 11 100.0
pod n/a
total 51 56 91.0


line stmt bran cond sub pod time code
1             package Time::Str;
2 24     24   2530996 use strict;
  24         50  
  24         937  
3 24     24   207 use warnings;
  24         65  
  24         1296  
4 24     24   382 use v5.10.1;
  24         86  
5              
6 24     24   115 use Carp qw[];
  24         50  
  24         792  
7 24     24   149 use Exporter qw[import];
  24         57  
  24         7202  
8              
9             BEGIN {
10 24     24   95 our $VERSION = '0.80';
11 24         129 our @EXPORT_OK = qw[ str2date
12             str2time
13             time2str ];
14 24         70 our %EXPORT_TAGS = ( all => \@EXPORT_OK );
15 24         66 our @CARP_NOT = qw[Time::Str::PP];
16              
17 24         55 my $xs_loaded = 0;
18             eval {
19 24         199 require XSLoader; XSLoader::load(__PACKAGE__, $VERSION);
  24         24877  
20 24         125 $xs_loaded = 1;
21 24 50       142 } unless $ENV{TIME_STR_PP};
22              
23 24 50       103 unless ($xs_loaded) {
24 0         0 require Time::Str::PP;
25 0         0 Time::Str::PP->import(@EXPORT_OK);
26             }
27              
28 24         209 require constant;
29 24 50       2987 constant->import(IMPLEMENTATION => $xs_loaded ? 'XS' : 'PP');
30             }
31              
32 24     24   147 use constant MIN_TIME => -62135596800; # 0001-01-01T00:00:00Z
  24         39  
  24         1213  
33 24     24   165 use constant MAX_TIME => 253402300799; # 9999-12-31T23:59:59Z
  24         40  
  24         1341  
34              
35 24         3237 use constant NON_CONSTRUCTOR_KEYS => qw[ tz_abbrev
36             tz_annotation
37             tz_offset
38 24     24   113 tz_utc ];
  24         39  
39              
40              
41             # XS call_pv("Carp::croak") inherits the caller's cop, causing
42             # Carp to see the wrong package. These wrappers give Carp the
43             # correct package for @CARP_NOT resolution.
44             {
45             package Time::Str;
46             sub _croak {
47 17     17   613363 &Carp::croak;
48             }
49             }
50              
51             {
52             package
53             Time::Str::Token; # hide from PAUSE/indexers
54             sub _croak {
55 32     32   351898 &Carp::croak;
56             }
57             }
58              
59             1;