File Coverage

blib/lib/Business/UDC.pm
Criterion Covered Total %
statement 35 40 87.5
branch 3 4 75.0
condition n/a
subroutine 9 11 81.8
pod 6 6 100.0
total 53 61 86.8


line stmt bran cond sub pod time code
1             package Business::UDC;
2              
3 6     6   134269 use strict;
  6         13  
  6         198  
4 6     6   50 use warnings;
  6         10  
  6         294  
5              
6 6     6   3801 use Business::UDC::Parser qw(parse);
  6         16  
  6         186  
7 6     6   405 use English;
  6         10  
  6         33  
8 6     6   2651 use Error::Pure::Utils qw(err_get);
  6         9  
  6         131  
9              
10             our $VERSION = 0.06;
11              
12             # Constructor.
13             sub new {
14 61     61 1 1327900 my ($class, $source) = @_;
15              
16             # Create object.
17 61         707 my $self = bless {
18             'source' => $source,
19             '_ast' => undef,
20             '_error' => [],
21             '_tokens' => [],
22             '_valid' => 0,
23             }, $class;
24              
25 61         160 my $res_hr = eval {
26 61         255 parse($self->{'source'});
27             };
28 61 100       26821 if ($EVAL_ERROR) {
29 24         47 chomp $EVAL_ERROR;
30 24         71 my ($error_hr) = err_get(1);
31 24         271 my @err = @{$error_hr->{'msg'}};
  24         75  
32 24         190 $self->{'_error'} = \@err;
33             } else {
34 37         97 $self->{'_ast'} = $res_hr->{'ast'};
35 37         75 $self->{'_tokens'} = $res_hr->{'tokens'};
36 37         116 $self->{'_valid'} = 1;
37             }
38              
39 61         465 return $self;
40             }
41              
42             sub ast {
43 0     0 1 0 my $self = shift;
44              
45 0         0 return $self->{'_ast'};
46             }
47              
48             sub error {
49 4     4 1 23 my $self = shift;
50              
51 4 50       28 return wantarray ? @{$self->{'_error'}} : $self->{'_error'}->[0];
  0         0  
52             }
53              
54             sub is_valid {
55 53     53 1 221 my $self = shift;
56              
57 53         360 return $self->{'_valid'};
58             }
59              
60             sub source {
61 1     1 1 6 my $self = shift;
62              
63 1         8 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__