File Coverage

blib/lib/Error/Pure/Print.pm
Criterion Covered Total %
statement 30 31 96.7
branch 4 4 100.0
condition 2 3 66.6
subroutine 9 9 100.0
pod 1 1 100.0
total 46 48 95.8


line stmt bran cond sub pod time code
1             package Error::Pure::Print;
2              
3 7     7   346587 use base qw(Exporter);
  7         16  
  7         1021  
4 7     7   75 use strict;
  7         14  
  7         197  
5 7     7   33 use warnings;
  7         17  
  7         463  
6              
7 7     7   3563 use Error::Pure::Output::Text qw(err_print);
  7         50373  
  7         291  
8 7     7   3567 use Error::Pure::Utils qw(err_helper);
  7         34  
  7         237  
9 7     7   457 use List::Util qw(none);
  7         11  
  7         689  
10 7     7   38 use Readonly;
  7         10  
  7         2446  
11              
12             # Constants.
13             Readonly::Array our @EXPORT_OK => qw(err);
14             Readonly::Scalar my $EMPTY_STR => q{};
15             Readonly::Scalar my $EVAL => 'eval {...}';
16              
17             our $VERSION = 0.34;
18              
19             # Process error.
20             sub err {
21 11     11 1 681369 my @msg = @_;
22              
23             # Get errors structure.
24 11         71 my @errors = err_helper(@msg);
25              
26             # Finalize in main on last err.
27 11         32 my $stack_ar = $errors[-1]->{'stack'};
28 11 100 66     103 if ($stack_ar->[-1]->{'class'} eq 'main'
29 22 100   22   138 && none { $_ eq $EVAL || $_ =~ /^eval '/ms }
30 22         85 map { $_->{'sub'} } @{$stack_ar}) {
  11         32  
31              
32 2         16 die err_print(@errors)."\n";
33              
34             # Die for eval.
35             } else {
36 9         174 die "$errors[-1]->{'msg'}->[0]\n";
37             }
38              
39 0           return;
40             }
41              
42             1;
43              
44             __END__