File Coverage

blib/lib/Sort/Key/DateTime.pm
Criterion Covered Total %
statement 35 40 87.5
branch 1 4 25.0
condition n/a
subroutine 12 13 92.3
pod 1 2 50.0
total 49 59 83.0


line stmt bran cond sub pod time code
1             package Sort::Key::DateTime;
2              
3             our $VERSION = '0.07';
4              
5 1     1   217938 use strict;
  1         2  
  1         72  
6 1     1   6 use warnings;
  1         1  
  1         62  
7              
8             require Exporter;
9             our @ISA = qw(Exporter);
10             our @EXPORT_OK = qw(dtkeysort
11             dtkeysort_inplace
12             rdtkeysort
13             rdtkeysort_inplac
14             dtsort
15             dtsort_inplace
16             rdtsort
17             rdtsort_inplace
18             mkkey_datetime
19             dtcmpstr);
20              
21 1     1   712 use Sort::Key qw(keysort_inplace);
  1         3524  
  1         76  
22 1     1   13 use DateTime;
  1         2  
  1         17  
23 1     1   5 use Carp;
  1         1  
  1         150  
24              
25             sub dtcmpstr ($) {
26 0     0 0 0 my $dt=shift;
27 0         0 my $key = eval { sprintf("%010d%06d%010d", $dt->utc_rd_values) };
  0         0  
28 0 0       0 $@ and croak "sorting key '$dt' generated for element '$_' is not a valid DateTime object ($@)";
29 0         0 $key;
30             }
31              
32             sub mkkey_datetime {
33 8337 50   8337 1 5712137 my $dt = @_ ? shift : $_;
34 8337         22474 sprintf("%010d%06d%010d", $dt->utc_rd_values);
35             }
36              
37 1     1   863 use Sort::Key::Register dt => \&mkkey_datetime, 'string';
  1         139  
  1         7  
38 1     1   75 use Sort::Key::Register datetime => \&mkkey_datetime, 'string';
  1         2  
  1         5  
39              
40 1     1   888 use Sort::Key::Maker dtkeysort => 'dt';
  1         347  
  1         6  
41 1     1   464 use Sort::Key::Maker rdtkeysort => '-dt';
  1         2  
  1         5  
42 1     1   558 use Sort::Key::Maker dtsort => \&mkkey_datetime, 'str';
  1         3  
  1         7  
43 1     1   148 use Sort::Key::Maker rdtsort => \&mkkey_datetime, '-str';
  1         2  
  1         5  
44              
45              
46              
47             1;
48             __END__