File Coverage

lib/SQL/Admin/Driver/Base/Parser.pm
Criterion Covered Total %
statement 18 34 52.9
branch 0 6 0.0
condition 2 5 40.0
subroutine 6 11 54.5
pod 0 6 0.0
total 26 62 41.9


line stmt bran cond sub pod time code
1              
2             package SQL::Admin::Driver::Base::Parser;
3              
4 3     3   2692 use strict;
  3         6  
  3         190  
5 3     3   19 use warnings;
  3         6  
  3         172  
6              
7             our $VERSION = v0.5.0;
8              
9             ######################################################################
10              
11 3     3   6019 use Parse::RecDescent;
  3         362279  
  3         30  
12              
13             our $AUTOLOAD;
14              
15             my $parser_skip = '([ \t\r\n]*)|((--(.*)\n))*';
16              
17             ######################################################################
18             ######################################################################
19             sub new { # ;
20 2     2 0 6 my ($class, %param) = @_;
21 2   50     13 my $grammar = $class->grammar || return;
22              
23 2         5 $::RD_HINT = 1;
24 2         5 $Parse::RecDescent::skip = '([ \t\r\n]*)|((--(.*)\n))*';
25              
26 2   33     19 bless {
27             %param,
28             parser => Parse::RecDescent->new ($grammar),
29             }, ref $class || $class;
30             }
31              
32              
33             ######################################################################
34             ######################################################################
35             sub configure { # ;
36 0     0 0 0 my ($self, $key, $value) = @_;
37              
38 0 0       0 $self->{$key} = $value if @_ == 3;
39 0         0 $self->{$key};
40             }
41              
42              
43             ######################################################################
44             ######################################################################
45             sub load { # ;
46 0     0 0 0 my ($self) = @_;
47              
48 0         0 my $data = do {
49 0         0 local $/;
50              
51 0 0       0 join ('', $self->{file} ? (map {
52 0         0 open my $fh, '<', $_ or die "Unable open ${_}: $!\n";
53             <$fh>
54 0 0       0 } @{ $self->{file} } ) : <>);
  0         0  
55             };
56              
57 0         0 $self->parse ($data);
58             }
59              
60              
61             ######################################################################
62             ######################################################################
63             sub parser { # ;
64 817     817 0 16080 shift->{parser};
65             }
66              
67              
68             ######################################################################
69             ######################################################################
70             sub parse { # ;
71 0     0 0 0 my ($self, $data) = @_;
72              
73 0         0 $self->postprocess ($self->parser->parse_sql ($data));
74             }
75              
76              
77             ######################################################################
78             ######################################################################
79             sub postprocess { # ;
80 0     0 0 0 shift; @_;
  0         0  
81             }
82              
83              
84             ######################################################################
85             ######################################################################
86 0     0   0 sub DESTROY { # ;
87             }
88              
89              
90             ######################################################################
91             ######################################################################
92             sub AUTOLOAD { # ;
93 817     817   1429748 my ($self, @args) = @_;
94 817         4892 my $name = substr $AUTOLOAD, 2 + rindex $AUTOLOAD, '::';
95              
96 817         2829 $self->parser->$name (@args);
97             }
98              
99              
100             ######################################################################
101             ######################################################################
102              
103             package SQL::Admin::Driver::Base::Parser;
104              
105             1;