File Coverage

blib/lib/JSON/Pointer/Exception.pm
Criterion Covered Total %
statement 27 27 100.0
branch n/a
condition n/a
subroutine 13 13 100.0
pod 7 7 100.0
total 47 47 100.0


line stmt bran cond sub pod time code
1             package JSON::Pointer::Exception;
2              
3 17     17   397 use 5.008_001;
  17         41  
4 17     17   83 use strict;
  17         22  
  17         348  
5 17     17   69 use warnings;
  17         28  
  17         489  
6             use overload (
7 17         99 q|""| => "to_string"
8 17     17   5228 );
  17         4421  
9              
10 17     17   1013 use Carp ();
  17         25  
  17         266  
11 17     17   61 use Exporter qw(import);
  17         21  
  17         4366  
12              
13             our $VERSION = '0.07';
14             our @EXPORT_OK = qw(
15             ERROR_INVALID_POINTER_SYNTAX
16             ERROR_POINTER_REFERENCES_NON_EXISTENT_VALUE
17             );
18              
19             our %EXPORT_TAGS = (
20             all => [ @EXPORT_OK ],
21             );
22              
23 22     22 1 1978 sub ERROR_INVALID_POINTER_SYNTAX { 1; }
24 77     77 1 11161 sub ERROR_POINTER_REFERENCES_NON_EXISTENT_VALUE { 2; }
25              
26             our %MESSAGE_BUNDLES = (
27             ERROR_INVALID_POINTER_SYNTAX()
28             => "Invalid pointer syntax (pointer: %s)",
29             ERROR_POINTER_REFERENCES_NON_EXISTENT_VALUE()
30             => "A pointer that references a non-existent value (pointer: %s)",
31             );
32              
33             sub new {
34 14     14 1 36 my ($class, %opts) = @_;
35 14         46 $opts{context}->last_error($opts{code});
36             bless {
37             code => $opts{code},
38             context => $opts{context},
39 14         320 } => $class
40             }
41              
42             sub throw {
43 14     14 1 37 Carp::croak(shift->new(@_));
44             }
45              
46             sub code {
47 6     6 1 31 shift->{code};
48             }
49              
50             sub context {
51 10     10 1 1542 shift->{context};
52             }
53              
54             sub to_string {
55 17     17 1 597 my $self = shift;
56 17         98 sprintf($MESSAGE_BUNDLES{$self->{code}}, $self->{context}{pointer});
57             }
58              
59             1;
60             __END__