--- trunk/run.pl 2005/12/16 21:09:42 268 +++ trunk/run.pl 2005/12/18 21:06:46 286 @@ -9,7 +9,7 @@ use WebPAC::Common 0.02; use WebPAC::Lookup; -use WebPAC::Input::ISIS; +use WebPAC::Input::ISIS 0.02; use WebPAC::Store 0.03; use WebPAC::Normalize::XML; use WebPAC::Output::TT; @@ -74,26 +74,37 @@ $log->info("database $database doesn't have inputs defined"); } + my @supported_inputs = keys %{ $config->{webpac}->{inputs} }; + foreach my $input (@inputs) { my $type = lc($input->{type}); - die "I know only how to handle input type isis, not '$type'!\n" unless ($type eq 'isis'); + die "I know only how to handle input types ", join(",", @supported_inputs), " not '$type'!\n" unless (grep(/$type/, @supported_inputs)); my $lookup = new WebPAC::Lookup( lookup_file => $input->{lookup}, ); - $log->info("working on input $input->{path} [$input->{type}]"); + my $input_module = $config->{webpac}->{inputs}->{$type}; + + $log->info("working on input $input->{path} [$input->{type}] using $input_module"); + + sub new_input { + my $name = shift; + my $args = shift; + new $name->($args); + } - my $isis = new WebPAC::Input::ISIS( + my $input = new_input($input_module,{ code_page => $config->{webpac}->{webpac_encoding}, limit_mfn => $input->{limit}, lookup => $lookup, - ); + }); + $log->logdie("can't create input using $input_module") unless ($input); - my $maxmfn = $isis->open( - filename => $input->{path}, + my $maxmfn = $input->open( + path => $input->{path}, code_page => $input->{encoding}, # database encoding ); @@ -105,14 +116,23 @@ prefix => $input->{name}, ); - $n->open( - tag => $input->{normalize}->{tag}, - xml_file => $input->{normalize}->{path}, - ); + my $normalize_path = $input->{normalize}->{path}; + + if ($normalize_path =~ m/\.xml$/i) { + $n->open( + tag => $input->{normalize}->{tag}, + xml_file => $input->{normalize}->{path}, + ); + } elsif ($normalize_path =~ m/\.(?:yml|yaml)$/i) { + $n->open_yaml( + path => $normalize_path, + tag => $input->{normalize}->{tag}, + ); + } - for ( 0 ... $isis->size ) { + for ( 0 ... $input->size ) { - my $row = $isis->fetch || next; + my $row = $input->fetch || next; my $mfn = $row->{'000'}->[0] || die "can't find MFN";