+ generate reports (validation and stats) for each input
+ rewrite lookup support to use WebPAC::Normalize [2.28]
+ marc_leader shouldn't really be included in hash returned by data_structure
++ add checks for search directive in normalization to parser
- fix-length fields (<100) support
- add option to specify output marc path in config.yml
-- add checks for search directive in normalization to parser
- support splitting of config yml to multiple files
- add dBase input format
- remove delimiters characters from index and query entered
=head1 VERSION
-Version 0.07
+Version 0.08
=cut
-our $VERSION = '0.07';
+our $VERSION = '0.08';
=head1 SYNOPSIS
}
-=head2 generate_marc
+=head2 have_rules
- my $do_marc = $parser->generate_marc($database, $input);
+ my $do_marc = $parser->have_rules('marc', $database, $input);
+ my $do_index = $parser->have_rules('search', $database);
-This function will return hash containing count of all found C<marc_*> directives.
+This function will return hash containing count of all found C<marc_*> or
+C<search> directives. Input name is optional.
=cut
-sub generate_marc {
+sub have_rules {
my $self = shift;
- my ($database,$input) = @_;
+
+ my $log = $self->_get_logger();
+ my $type = shift @_ || $log->logconfess("need at least type");
+ my $database = shift @_ || $log->logconfess("database is required");
+ my $input = shift @_;
+
$input = _input_name($input);
- return unless (
- defined( $self->{_generate_marc}->{ _q($database) } ) &&
- defined( $self->{_generate_marc}->{ _q($database) }->{ _q($input) } )
- );
- return $self->{_generate_marc}->{ _q($database) }->{ _q($input) };
+
+
+ return unless defined( $self->{_have_rules}->{ _q($database) } );
+
+ my $database_rules = $self->{_have_rules}->{ _q($database ) };
+
+ if (defined($input)) {
+
+ return unless (
+ defined( $database_rules->{ _q($input) } ) &&
+ defined( $database_rules->{ _q($input) }->{ $type } )
+ );
+
+ return $database_rules->{ _q($input) }->{ $type };
+ }
+
+ my $usage;
+
+ foreach my $i (keys %{ $database_rules }) {
+ next unless defined( $database_rules->{$i}->{$type} );
+
+ foreach my $t (keys %{ $database_rules->{ $i }->{$type} }) {
+ $usage->{ $t } += $database_rules->{ $i }->{ $t };
+ }
+ }
+
+ return $usage;
+
}
my ($Document,$Element) = @_;
$Element->isa('PPI::Token::Word') or return '';
- $Element->content =~ m/^marc/ or return '';
-
- $log->debug("found marc output generation for $database/$input");
- $self->{_generate_marc}->{ $database }->{ $input }->{ $Element->content }++;
+ if ($Element->content =~ m/^(marc|search)/) {
+ my $what = $1;
+ $log->debug("found $what rules in $database/$input");
+ $self->{_have_rules}->{ $database }->{ $input }->{ $what }->{ $Element->content }++;
+ } else {
+ return '';
+ }
});
return 1;
use lib './lib';
use WebPAC::Common 0.02;
-use WebPAC::Parser 0.07;
+use WebPAC::Parser 0.08;
use WebPAC::Input 0.13;
use WebPAC::Store 0.11;
use WebPAC::Normalize 0.22;
}
my $indexer;
- if ($use_indexer) {
+ if ($use_indexer && $parser->have_rules( 'search', $database )) {
my $cfg_name = $use_indexer;
$cfg_name =~ s/\-.*$//;
}
my $marc;
- if ($parser->generate_marc( $database, $input_name )) {
+ if ($parser->have_rules( 'marc', $database, $input_name )) {
$marc = new WebPAC::Output::MARC(
path => "out/marc/${database}-${input_name}.marc",
lint => $marc_lint,
debug => $debug,
), "new");
-ok(my $marc = $parser->generate_marc('marc','marc-input'), 'generate_marc');
+ok(my $marc = $parser->have_rules('marc', 'marc', 'marc-input'), 'have_rules(marc,...)');
diag "marc: ",dump($marc) if ($debug);