File Coverage

blib/lib/Error/Pure/ANSIColor/AllError.pm
Criterion Covered Total %
statement 21 31 67.7
branch 0 4 0.0
condition 0 3 0.0
subroutine 7 9 77.7
pod 1 1 100.0
total 29 48 60.4


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