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.021003';
3 2     2   503 use v5.10;
  2         4  
4 2     2   406 use strictures 2;
  2         1159  
  2         77  
5              
6 2     2   1100 use Devel::StackTrace;
  2         4450  
  2         68  
7              
8             use overload
9 0     0   0 bool => sub { 1 },
10 2         9 '""' => 'string',
11 2     2   8 fallback => 1 ;
  2         3  
12              
13              
14             sub TRACE () { 0 }
15             sub ARRAY () { 1 }
16              
17             sub __new_trace {
18 12     12   26 Devel::StackTrace->new(
19             ignore_class => __PACKAGE__,
20             no_refs => 1,
21             )
22             }
23              
24             sub new {
25 11     11 0 1813 my $class = shift;
26 11         16 my $trace = $class->__new_trace;
27 11   66     1161 bless [
28             $trace, ## TRACE
29             [ @_ ], ## ARRAY
30             ], ref $class || $class
31             }
32              
33             sub trace {
34 3     3 1 295 my ($self) = @_;
35 3         9 $self->[TRACE]
36             }
37              
38             sub _set_trace {
39 1     1   115 my ($self, $trace) = @_;
40 1         2 $self->[TRACE] = $trace;
41 1         9 $self
42             }
43              
44             sub throw {
45 1     1 1 38 my ($self) = @_;
46 1         3 die $self->_set_trace( $self->__new_trace )
47             }
48              
49             sub string {
50 10     10 1 1410 join '', map { "$_" } @{ $_[0]->[ARRAY] }
  15         116  
  10         18  
51             }
52              
53             sub push {
54 3     3 1 304 my $self = shift;
55 3         3 push @{ $self->[ARRAY] }, @_;
  3         4  
56 3         6 $self
57             }
58              
59             sub unshift {
60 2     2 1 2 my $self = shift;
61 2         2 unshift @{ $self->[ARRAY] }, @_;
  2         5  
62 2         3 $self
63             }
64              
65             sub slice {
66 1     1 1 1 my $self = shift;
67 1         1 $self->new( @{ $self->[ARRAY] }[@_] )
  1         3  
68             }
69              
70             sub join {
71 4     4 1 267 my ($self, $delim) = @_;
72 4   100     12 $self->new( join($delim //= ' ', map { "$_" } @{ $self->[ARRAY] }) )
  10         19  
  4         5  
73             }
74              
75              
76             1;
77             __END__