File Coverage

blib/lib/Business/UDC.pm
Criterion Covered Total %
statement 38 40 95.0
branch 4 4 100.0
condition n/a
subroutine 10 11 90.9
pod 6 6 100.0
total 58 61 95.0


line stmt bran cond sub pod time code
1             package Business::UDC;
2              
3 7     7   180034 use strict;
  7         12  
  7         247  
4 7     7   60 use warnings;
  7         13  
  7         483  
5              
6 7     7   4530 use Business::UDC::Parser qw(parse);
  7         22  
  7         191  
7 7     7   524 use English;
  7         13  
  7         41  
8 7     7   3685 use Error::Pure::Utils qw(err_get);
  7         14  
  7         211  
9              
10             our $VERSION = 0.08;
11              
12             # Constructor.
13             sub new {
14 76     76 1 1983178 my ($class, $source) = @_;
15              
16             # Create object.
17 76         891 my $self = bless {
18             'source' => $source,
19             '_ast' => undef,
20             '_error' => [],
21             '_tokens' => [],
22             '_valid' => 0,
23             }, $class;
24              
25 76         169 my $res_hr = eval {
26 76         308 parse($self->{'source'});
27             };
28 76 100       42224 if ($EVAL_ERROR) {
29 33         84 chomp $EVAL_ERROR;
30 33         114 my ($error_hr) = err_get(1);
31 33         453 my @err = @{$error_hr->{'msg'}};
  33         116  
32 33         289 $self->{'_error'} = \@err;
33             } else {
34 43         103 $self->{'_ast'} = $res_hr->{'ast'};
35 43         96 $self->{'_tokens'} = $res_hr->{'tokens'};
36 43         100 $self->{'_valid'} = 1;
37             }
38              
39 76         718 return $self;
40             }
41              
42             sub ast {
43 3     3 1 15 my $self = shift;
44              
45 3         14 return $self->{'_ast'};
46             }
47              
48             sub error {
49 13     13 1 48 my $self = shift;
50              
51 13 100       52 return wantarray ? @{$self->{'_error'}} : $self->{'_error'}->[0];
  8         44  
52             }
53              
54             sub is_valid {
55 57     57 1 268 my $self = shift;
56              
57 57         351 return $self->{'_valid'};
58             }
59              
60             sub source {
61 1     1 1 5 my $self = shift;
62              
63 1         7 return $self->{'source'};
64             }
65              
66             sub tokens {
67 0     0 1   my $self = shift;
68              
69 0           return $self->{'_tokens'};
70             }
71              
72             1;
73              
74             __END__