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 28     28   2608364 use strict;
  28         60  
  28         1200  
3 28     28   278 use warnings;
  28         74  
  28         1641  
4 28     28   517 use v5.10.1;
  28         114  
5              
6 28     28   154 use Carp qw[];
  28         79  
  28         882  
7 28     28   147 use Exporter qw[import];
  28         56  
  28         6779  
8              
9             BEGIN {
10 28     28   104 our $VERSION = '0.87';
11 28         138 our @EXPORT_OK = qw[ str2date
12             str2time
13             time2str ];
14 28         105 our %EXPORT_TAGS = ( all => \@EXPORT_OK );
15 28         68 our @CARP_NOT = qw[Time::Str::PP];
16              
17 28         59 my $xs_loaded = 0;
18             eval {
19 28         195 require XSLoader; XSLoader::load(__PACKAGE__, $VERSION);
  28         33698  
20 28         157 $xs_loaded = 1;
21 28 50       188 } unless $ENV{TIME_STR_PP};
22              
23 28 50       126 unless ($xs_loaded) {
24 0         0 require Time::Str::PP;
25 0         0 Time::Str::PP->import(@EXPORT_OK);
26             }
27              
28 28         206 require constant;
29 28 50       3640 constant->import(IMPLEMENTATION => $xs_loaded ? 'XS' : 'PP');
30             }
31              
32 28     28   181 use constant MIN_TIME => -62135596800; # 0001-01-01T00:00:00Z
  28         45  
  28         1581  
33 28     28   222 use constant MAX_TIME => 253402300799; # 9999-12-31T23:59:59Z
  28         50  
  28         1816  
34              
35 28         3896 use constant NON_CONSTRUCTOR_KEYS => qw[ tz_abbrev
36             tz_annotation
37             tz_offset
38 28     28   145 tz_utc ];
  28         46  
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   597719 &Carp::croak;
48             }
49             }
50              
51             {
52             package
53             Time::Str::Token; # hide from PAUSE/indexers
54             sub _croak {
55 32     32   355405 &Carp::croak;
56             }
57             }
58              
59             1;