File Coverage

lib/App/TimeTracker/Utils.pm
Criterion Covered Total %
statement 29 39 74.3
branch 2 6 33.3
condition 1 3 33.3
subroutine 9 12 75.0
pod 0 4 0.0
total 41 64 64.0


line stmt bran cond sub pod time code
1             package App::TimeTracker::Utils;
2 12     12   80 use strict;
  12         23  
  12         318  
3 12     12   54 use warnings;
  12         20  
  12         249  
4 12     12   194 use 5.010;
  12         35  
5              
6             # ABSTRACT: Utility Methods/Functions for App::TimeTracker
7              
8 12     12   61 use Scalar::Util qw(blessed);
  12         20  
  12         688  
9 12     12   6644 use Term::ANSIColor;
  12         123227  
  12         863  
10              
11 12     12   101 use Exporter;
  12         21  
  12         359  
12 12     12   59 use parent qw(Exporter);
  12         20  
  12         87  
13              
14             our @EXPORT = qw();
15             our @EXPORT_OK = qw(pretty_date now error_message warning_message);
16             our %EXPORT_TAGS = ( all => \@EXPORT_OK );
17              
18             sub error_message {
19 0     0 0 0 return _message( 'bold red', @_ );
20             }
21              
22             sub warning_message {
23 0     0 0 0 return _message( 'bold yellow', @_ );
24             }
25              
26             sub _message {
27 0     0   0 my ( $color, $message, @params ) = @_;
28              
29 0         0 my $string = sprintf( $message, @params );
30              
31 0         0 print color $color;
32 0         0 print $string;
33 0         0 say color 'reset';
34             }
35              
36             sub pretty_date {
37 3     3 0 10 my ($date) = @_;
38              
39 3 50 33     27 unless ( blessed $date
40             && $date->isa('DateTime') )
41             {
42 0         0 return $date;
43             }
44             else {
45 3         10 my $now = now();
46 3         6 my $yesterday = now()->subtract( days => 1 );
47 3 50       2864 if ( $date->dmy eq $now->dmy ) {
    0          
48 3         73 return $date->hms(':');
49             }
50             elsif ( $date->dmy eq $yesterday->dmy ) {
51 0         0 return 'yesterday ' . $date->hms(':');
52             }
53             else {
54 0         0 return $date->dmy('.') . ' ' . $date->hms(':');
55             }
56             }
57             }
58              
59             sub now {
60 18     18 0 98 my $dt = DateTime->now();
61 18         5568 $dt->set_time_zone('local');
62 18         13586 return $dt;
63             }
64             1;
65              
66             __END__
67              
68             =pod
69              
70             =encoding UTF-8
71              
72             =head1 NAME
73              
74             App::TimeTracker::Utils - Utility Methods/Functions for App::TimeTracker
75              
76             =head1 VERSION
77              
78             version 3.004
79              
80             =head1 AUTHOR
81              
82             Thomas Klausner <domm@cpan.org>
83              
84             =head1 COPYRIGHT AND LICENSE
85              
86             This software is copyright (c) 2011 - 2020 by Thomas Klausner.
87              
88             This is free software; you can redistribute it and/or modify it under
89             the same terms as the Perl 5 programming language system itself.
90              
91             =cut