File Coverage

blib/lib/Error/Pure/PrintVar.pm
Criterion Covered Total %
statement 29 31 93.5
branch 3 4 75.0
condition 1 3 33.3
subroutine 9 9 100.0
pod 1 1 100.0
total 43 48 89.5


line stmt bran cond sub pod time code
1             package Error::Pure::PrintVar;
2              
3 3     3   78164 use base qw(Exporter);
  3         27  
  3         430  
4 3     3   21 use strict;
  3         7  
  3         68  
5 3     3   23 use warnings;
  3         8  
  3         111  
6              
7 3     3   1393 use Error::Pure::Utils qw(err_helper);
  3         6  
  3         58  
8 3     3   1876 use Error::Pure::Output::Text qw(err_print_var);
  3         4465  
  3         60  
9 3     3   266 use List::Util qw(none);
  3         7  
  3         363  
10 3     3   22 use Readonly;
  3         5  
  3         814  
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.29;
18              
19             # Process error.
20             sub err {
21 5     5 1 2758 my @msg = @_;
22              
23             # Get errors structure.
24 5         20 my @errors = err_helper(@msg);
25              
26             # Finalize in main on last err.
27 5         11 my $stack_ar = $errors[-1]->{'stack'};
28 5 50 33     25 if ($stack_ar->[-1]->{'class'} eq 'main'
29 10 100   10   36 && none { $_ eq $EVAL || $_ =~ /^eval '/ms }
30 10         30 map { $_->{'sub'} } @{$stack_ar}) {
  5         12  
31              
32 0         0 die scalar err_print_var(@errors);
33              
34             # Die for eval.
35             } else {
36 5         29 die "$errors[-1]->{'msg'}->[0]\n";
37             }
38              
39 0           return;
40             }
41              
42             1;
43              
44             __END__