--- trunk/lib/WebPAC/Parser.pm 2006/09/25 12:51:33 700 +++ trunk/lib/WebPAC/Parser.pm 2006/09/25 12:51:47 701 @@ -63,12 +63,6 @@ $self->read_sources; - $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)); - } ); - $self ? return $self : return undef; } @@ -80,8 +74,6 @@ =cut -sub _input_name($); - sub read_sources { my $self = shift; @@ -89,22 +81,14 @@ my $nr = 0; + my @lookups; + $self->{config}->iterate_inputs( sub { my ($input, $database) = @_; $log->debug("database: $database input = ", dump($input)); - my @normalize; - - if (ref($input->{normalize}) eq 'ARRAY') { - @normalize = @{ $input->{normalize} }; - } else { - @normalize = ( $input->{normalize} ); - } - -$log->warn("normalize = ",dump(@normalize)); - - foreach my $normalize (@normalize) { + foreach my $normalize (@{ $input->{normalize} }) { my $path = $normalize->{path}; return unless($path); @@ -118,13 +102,11 @@ $log->debug("$database/$input_name: adding $path"); - $self->{valid_inputs}->{$database}->{$input_name} = { - source => $s, - path => $full, - usage => 0, - } unless defined($self->{valid_inputs}->{$database}->{$input_name}); + $self->{valid_inputs}->{$database}->{$input_name}++; - $self->{valid_inputs}->{$database}->{$input_name}->{usage}++; + push @lookups, sub { + $self->parse_lookups( $database, $input_name, $full, $s ); + }; $nr++; } @@ -132,14 +114,17 @@ $log->debug("found $nr source files"); + # parse all lookups + $_->() foreach (@lookups); + return $nr; } =head2 parse_lookups - $parser->parse_lookups($database,$input); + $parser->parse_lookups($database,$input,$path,$source); -Called for each input by L +Called for each normalize source in each input by L It will report invalid databases and inputs in error log after parsing. @@ -147,7 +132,7 @@ sub parse_lookups { my $self = shift; - my ($database, $input) = @_; + my ($database, $input, $path, $source) = @_; $input = _input_name($input); @@ -156,12 +141,9 @@ $log->logdie("invalid database $database" ) unless $self->valid_database( $database ); $log->logdie("invalid input $input of database $database", ) unless $self->valid_database_input( $database, $input ); - my $source = $self->{valid_inputs}->{$database}->{$input}->{source}; - my $path = $self->{valid_inputs}->{$database}->{$input}->{path}; - $log->logdie("no source found for database $database input $input path $path") unless ($source); - $log->info("parsing lookups for $database/$input from $path"); + $log->info("parsing lookups for $database/$input from $path (",length($source)," bytes)"); my $Document = PPI::Document->new( \$source ) || $log->logdie("can't parse source:\n", $self->{source});