File Coverage

blib/lib/Error/Pure/ANSIColor/Error.pm
Criterion Covered Total %
statement 24 34 70.5
branch 0 4 0.0
condition 0 3 0.0
subroutine 8 10 80.0
pod 1 1 100.0
total 33 52 63.4


line stmt bran cond sub pod time code
1             package Error::Pure::ANSIColor::Error;
2              
3 2     2   75385 use base qw(Exporter);
  2         22  
  2         304  
4 2     2   14 use strict;
  2         4  
  2         56  
5 2     2   10 use warnings;
  2         4  
  2         87  
6              
7 2     2   1088 use Error::Pure::Output::ANSIColor qw(err_line);
  2         35065  
  2         52  
8 2     2   1406 use Error::Pure::Utils qw(err_helper);
  2         3406  
  2         34  
9 2     2   1379 use List::MoreUtils qw(none);
  2         29156  
  2         14  
10 2     2   2306 use Readonly;
  2         4  
  2         106  
11 2     2   12 use Term::ANSIColor;
  2         5  
  2         667  
12              
13             # Constants.
14             Readonly::Array our @EXPORT_OK => qw(err);
15             Readonly::Scalar my $EVAL => 'eval {...}';
16              
17             our $VERSION = 0.27;
18              
19             # Process error.
20             sub err {
21 0     0 1   my @msg = @_;
22              
23             # Get errors structure.
24 0           my @errors = err_helper(@msg);
25              
26             # Finalize in main on last err.
27 0           my $stack_ar = $errors[-1]->{'stack'};
28 0 0 0       if ($stack_ar->[-1]->{'class'} eq 'main'
29 0 0   0     && none { $_ eq $EVAL || $_ =~ m/^eval '/ms }
30 0           map { $_->{'sub'} } @{$stack_ar}) {
  0            
31              
32 0           die err_line(@errors);
33              
34             # Die for eval.
35             } else {
36 0           die "$errors[-1]->{'msg'}->[0]\n";
37             }
38              
39 0           return;
40             }
41              
42             1;
43              
44             __END__