/[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 699 by dpavlin, Mon Sep 25 12:51:17 2006 UTC revision 701 by dpavlin, Mon Sep 25 12:51:47 2006 UTC
# Line 63  sub new { Line 63  sub new {
63    
64          $self->read_sources;          $self->read_sources;
65    
         $self->{config}->iterate_inputs( sub {  
                 my ($input, $database) = @_;  
                 return unless $self->valid_database_input($database, _input_name($input));  
                 $self->parse_lookups($database, _input_name($input));  
         } );  
   
66          $self ? return $self : return undef;          $self ? return $self : return undef;
67  }  }
68    
# Line 80  Called by L</new>. Line 74  Called by L</new>.
74    
75  =cut  =cut
76    
 sub _input_name($);  
   
77  sub read_sources {  sub read_sources {
78          my $self = shift;          my $self = shift;
79    
# Line 89  sub read_sources { Line 81  sub read_sources {
81    
82          my $nr = 0;          my $nr = 0;
83    
84            my @lookups;
85    
86          $self->{config}->iterate_inputs( sub {          $self->{config}->iterate_inputs( sub {
87                  my ($input, $database) = @_;                  my ($input, $database) = @_;
88    
89                  $log->debug("database: $database input = ", dump($input));                  $log->debug("database: $database input = ", dump($input));
90    
91                  my @normalize;                  foreach my $normalize (@{ $input->{normalize} }) {
   
                 if (ref($input->{normalize}) eq 'ARRAY') {  
                         @normalize = @{ $input->{normalize} };  
                 } else {  
                         @normalize = ( $input->{normalize} );  
                 }  
   
 $log->warn("normalize = ",dump(@normalize));  
   
                 foreach my $normalize (@normalize) {  
92    
93                          my $path = $normalize->{path};                          my $path = $normalize->{path};
94                          return unless($path);                          return unless($path);
# Line 118  $log->warn("normalize = ",dump(@normaliz Line 102  $log->warn("normalize = ",dump(@normaliz
102    
103                          $log->debug("$database/$input_name: adding $path");                          $log->debug("$database/$input_name: adding $path");
104    
105                          $self->{valid_inputs}->{$database}->{$input_name} = {                          $self->{valid_inputs}->{$database}->{$input_name}++;
                                 source => $s,  
                                 path => $full,  
                                 usage => 0,  
                         } unless defined($self->{valid_inputs}->{$database}->{$input_name});  
106    
107                          $self->{valid_inputs}->{$database}->{$input_name}->{usage}++;                          push @lookups, sub {
108                                    $self->parse_lookups( $database, $input_name, $full, $s );
109                            };
110    
111                          $nr++;                          $nr++;
112                  }                  }
# Line 132  $log->warn("normalize = ",dump(@normaliz Line 114  $log->warn("normalize = ",dump(@normaliz
114    
115          $log->debug("found $nr source files");          $log->debug("found $nr source files");
116    
117            # parse all lookups
118            $_->() foreach (@lookups);
119    
120          return $nr;          return $nr;
121  }  }
122    
123  =head2 parse_lookups  =head2 parse_lookups
124    
125    $parser->parse_lookups($database,$input);    $parser->parse_lookups($database,$input,$path,$source);
126    
127  Called for each input by L</new>  Called for each normalize source in each input by L</new>
128    
129  It will report invalid databases and inputs in error log after parsing.  It will report invalid databases and inputs in error log after parsing.
130    
# Line 147  It will report invalid databases and inp Line 132  It will report invalid databases and inp
132    
133  sub parse_lookups {  sub parse_lookups {
134          my $self = shift;          my $self = shift;
135          my ($database, $input) = @_;          my ($database, $input, $path, $source) = @_;
136    
137          $input = _input_name($input);          $input = _input_name($input);
138    
# Line 156  sub parse_lookups { Line 141  sub parse_lookups {
141          $log->logdie("invalid database $database" ) unless $self->valid_database( $database );          $log->logdie("invalid database $database" ) unless $self->valid_database( $database );
142          $log->logdie("invalid input $input of database $database", ) unless $self->valid_database_input( $database, $input );          $log->logdie("invalid input $input of database $database", ) unless $self->valid_database_input( $database, $input );
143    
         my $source = $self->{valid_inputs}->{$database}->{$input}->{source};  
         my $path = $self->{valid_inputs}->{$database}->{$input}->{path};  
   
144          $log->logdie("no source found for database $database input $input path $path") unless ($source);          $log->logdie("no source found for database $database input $input path $path") unless ($source);
145    
146          $log->info("parsing lookups for $database/$input from $path");          $log->info("parsing lookups for $database/$input from $path (",length($source)," bytes)");
147    
148          my $Document = PPI::Document->new( \$source ) || $log->logdie("can't parse source:\n", $self->{source});          my $Document = PPI::Document->new( \$source ) || $log->logdie("can't parse source:\n", $self->{source});
149    

Legend:
Removed from v.699  
changed lines
  Added in v.701

  ViewVC Help
Powered by ViewVC 1.1.26