/[webpac2]/trunk/lib/WebPAC/Parser.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /trunk/lib/WebPAC/Parser.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 703 by dpavlin, Mon Sep 25 13:24:09 2006 UTC revision 720 by dpavlin, Fri Sep 29 12:27:36 2006 UTC
# Line 9  use PPI::Dumper; Line 9  use PPI::Dumper;
9  use Data::Dump qw/dump/;  use Data::Dump qw/dump/;
10  use File::Slurp;  use File::Slurp;
11    
12  use base qw/WebPAC::Common WebPAC::Normalize/;  use base qw/WebPAC::Common/;
13    
14  =head1 NAME  =head1 NAME
15    
# Line 17  WebPAC::Parser - parse perl normalizatio Line 17  WebPAC::Parser - parse perl normalizatio
17    
18  =head1 VERSION  =head1 VERSION
19    
20  Version 0.05  Version 0.06
21    
22  =cut  =cut
23    
24  our $VERSION = '0.05';  our $VERSION = '0.06';
25    
26  =head1 SYNOPSIS  =head1 SYNOPSIS
27    
# Line 66  sub new { Line 66  sub new {
66          $self ? return $self : return undef;          $self ? return $self : return undef;
67  }  }
68    
 =head2 lookup_create_rules  
   
   my $source = $parser->lookup_create_rules($database, $input);  
   
 =cut  
   
 sub lookup_create_rules {  
         my $self = shift;  
         my ($database,$input) = @_;  
         return $self->{_lookup_create}->{ _q($database) }->{ _q($input) };  
 }  
   
69  =head2 valid_database  =head2 valid_database
70    
71    my $ok = $parse->valid_database('key');    my $ok = $parse->valid_database('key');
# Line 100  sub valid_database { Line 88  sub valid_database {
88    
89  sub valid_database_input {  sub valid_database_input {
90          my $self = shift;          my $self = shift;
   
91          my ($database,$input) = @_;          my ($database,$input) = @_;
92            $input = _input_name($input);
93          return defined($self->{valid_inputs}->{ _q($database) }->{ _q($input) });          return defined($self->{valid_inputs}->{ _q($database) }->{ _q($input) });
94  }  }
95    
# Line 116  Return all databases and inputs on which Line 104  Return all databases and inputs on which
104  sub depends {  sub depends {
105          my $self = shift;          my $self = shift;
106          my ($database,$input) = @_;          my ($database,$input) = @_;
107            $input = _input_name($input);
108          $self->_get_logger->debug("depends($database,$input)");          $self->_get_logger->debug("depends($database,$input)");
109          return unless (          return unless (
110                  defined( $self->{depends}->{ _q($database) } ) &&                  defined( $self->{depends}->{ _q($database) } ) &&
# Line 124  sub depends { Line 113  sub depends {
113          return $self->{depends}->{ _q($database) }->{ _q($input) };          return $self->{depends}->{ _q($database) }->{ _q($input) };
114  }  }
115    
116    =head2 have_lookup_create
117    
118      my @keys = $parser->have_lookup_create($database, $input);
119    
120    =cut
121    
122    sub have_lookup_create {
123            my $self = shift;
124            my ($database,$input) = @_;
125            $input = _input_name($input);
126            return unless (
127                    defined( $self->{_lookup_create_key}->{ _q($database) } ) &&
128                    defined( $self->{_lookup_create_key}->{ _q($database) }->{ _q($input) } )
129            );
130            return keys %{ $self->{_lookup_create_key}->{ _q($database) }->{ _q($input) } };
131    }
132    
133    
134    =head2 lookup_create_rules
135    
136      my $source = $parser->lookup_create_rules($database, $input);
137    
138    =cut
139    
140    sub lookup_create_rules {
141            my $self = shift;
142            my ($database,$input) = @_;
143            $input = _input_name($input);
144            return unless (
145                    defined( $self->{_lookup_create}->{ _q($database) } ) &&
146                    defined( $self->{_lookup_create}->{ _q($database) }->{ _q($input) } )
147            );
148            return $self->{_lookup_create}->{ _q($database) }->{ _q($input) };
149    }
150    
151    =head2 normalize_rules
152    
153      my $source = $parser->normalize_rules($database, $input);
154    
155    =cut
156    
157    sub normalize_rules {
158            my $self = shift;
159            my ($database,$input) = @_;
160            $input = _input_name($input);
161            return unless (
162                    defined( $self->{_normalize_source}->{ _q($database) } ) &&
163                    defined( $self->{_normalize_source}->{ _q($database) }->{ _q($input) } )
164            );
165            return $self->{_normalize_source}->{ _q($database) }->{ _q($input) };
166    }
167    
168  =head1 PRIVATE  =head1 PRIVATE
169    
170  =head2 _read_sources  =head2 _read_sources
# Line 184  sub _read_sources { Line 225  sub _read_sources {
225    
226    $parser->_parse_lookups($database,$input,$path,$source);    $parser->_parse_lookups($database,$input,$path,$source);
227    
228  Called for each normalize source (rules) in each input by L</read_sources>  Called for each normalize source (rules) in each input by L</_read_sources>
229    
230  It will report invalid databases and inputs in error log after parsing.  It will report invalid databases and inputs in error log after parsing.
231    
# Line 272  sub _parse_lookups { Line 313  sub _parse_lookups {
313    
314                          $log->debug("key = $key");                          $log->debug("key = $key");
315    
                         my $create = '  
                                 $coderef = ' . $e[7] . $e[8] . ';  
                                 foreach my $v ($coderef->()) {  
                                         next unless (defined($v) && $v ne \'\');  
                                         push @{ $lookup->{\'' . $key . '\'}->{$v} }, $mfn;  
                                 }  
                         ';  
   
                         $log->debug("create: $create");  
   
316                          return $self->_lookup_error("invalid database $e[3] in $path" ) unless $self->valid_database( $e[3] );                          return $self->_lookup_error("invalid database $e[3] in $path" ) unless $self->valid_database( $e[3] );
317                          return $self->_lookup_error("invalid input $e[5] of database $e[3] in $path", ) unless $self->valid_database_input( $e[3], $e[5] );                          return $self->_lookup_error("invalid input $e[5] of database $e[3] in $path", ) unless $self->valid_database_input( $e[3], $e[5] );
318    
319                            my $create = qq{
320                                    save_into_lookup($e[3],$e[5],'$key', $e[7] $e[8] );
321                            };
322    
323                            $log->debug("create: $create");
324    
325                          # save code to create this lookup                          # save code to create this lookup
326                          $self->{_lookup_create}->{ _q($e[3]) }->{ _q($e[5]) }->{ _q($key) } .= $create;                          $self->{_lookup_create}->{ _q($e[3]) }->{ _q($e[5]) } .= $create;
327                            $self->{_lookup_create_key}->{ _q($e[3]) }->{ _q($e[5]) }->{ _q($key) }++;
328    
329    
330                          if (defined( $self->{depends}->{ $database }->{ $input }->{ _q($e[3]) }->{ _q($e[5]) }->{ $key } )) {                          if (defined( $self->{depends}->{ $database }->{ $input }->{ _q($e[3]) }->{ _q($e[5]) }->{ $key } )) {
# Line 314  sub _parse_lookups { Line 352  sub _parse_lookups {
352          $log->debug("create: ", dump($self->{_lookup_create}) );          $log->debug("create: ", dump($self->{_lookup_create}) );
353          $log->debug("normalize: $normalize_source");          $log->debug("normalize: $normalize_source");
354    
355          $self->{_normalize_source}->{$database}->{$input} = $normalize_source;          $self->{_normalize_source}->{$database}->{$input} .= $normalize_source;
356    
357          if ($self->{debug}) {          if ($self->{debug}) {
358                  my $Dumper = PPI::Dumper->new( $Document );                  my $Dumper = PPI::Dumper->new( $Document );

Legend:
Removed from v.703  
changed lines
  Added in v.720

  ViewVC Help
Powered by ViewVC 1.1.26