File Coverage

blib/lib/Bot/Cobalt/Error.pm
Criterion Covered Total %
statement 40 41 97.5
branch n/a
condition 4 5 80.0
subroutine 14 15 93.3
pod 7 8 87.5
total 65 69 94.2


line stmt bran cond sub pod time code
1             package Bot::Cobalt::Error;
2             $Bot::Cobalt::Error::VERSION = '0.021002';
3 2     2   791 use v5.10;
  2         5  
4 2     2   457 use strictures 2;
  2         1087  
  2         55  
5              
6 2     2   1066 use Devel::StackTrace;
  2         4325  
  2         70  
7              
8             use overload
9 0     0   0 bool => sub { 1 },
10 2         9 '""' => 'string',
11 2     2   9 fallback => 1 ;
  2         2  
12              
13              
14             sub TRACE () { 0 }
15             sub ARRAY () { 1 }
16              
17             sub __new_trace {
18 12     12   28 Devel::StackTrace->new(
19             ignore_class => __PACKAGE__,
20             no_refs => 1,
21             )
22             }
23              
24             sub new {
25 11     11 0 1837 my $class = shift;
26 11         17 my $trace = $class->__new_trace;
27 11   66     1132 bless [
28             $trace, ## TRACE
29             [ @_ ], ## ARRAY
30             ], ref $class || $class
31             }
32              
33             sub trace {
34 3     3 1 290 my ($self) = @_;
35 3         9 $self->[TRACE]
36             }
37              
38             sub _set_trace {
39 1     1   112 my ($self, $trace) = @_;
40 1         1 $self->[TRACE] = $trace;
41 1         10 $self
42             }
43              
44             sub throw {
45 1     1 1 39 my ($self) = @_;
46 1         1 die $self->_set_trace( $self->__new_trace )
47             }
48              
49             sub string {
50 10     10 1 1393 join '', map { "$_" } @{ $_[0]->[ARRAY] }
  15         114  
  10         20  
51             }
52              
53             sub push {
54 3     3 1 324 my $self = shift;
55 3         3 push @{ $self->[ARRAY] }, @_;
  3         4  
56 3         8 $self
57             }
58              
59             sub unshift {
60 2     2 1 2 my $self = shift;
61 2         3 unshift @{ $self->[ARRAY] }, @_;
  2         3  
62 2         5 $self
63             }
64              
65             sub slice {
66 1     1 1 1 my $self = shift;
67 1         2 $self->new( @{ $self->[ARRAY] }[@_] )
  1         3  
68             }
69              
70             sub join {
71 4     4 1 262 my ($self, $delim) = @_;
72 4   100     13 $self->new( join($delim //= ' ', map { "$_" } @{ $self->[ARRAY] }) )
  10         15  
  4         7  
73             }
74              
75              
76             1;
77             __END__