--- trunk/lib/WebPAC/Parser.pm 2006/10/08 18:44:42 754 +++ trunk/lib/WebPAC/Parser.pm 2006/10/08 20:28:17 755 @@ -17,11 +17,11 @@ =head1 VERSION -Version 0.07 +Version 0.08 =cut -our $VERSION = '0.07'; +our $VERSION = '0.08'; =head1 SYNOPSIS @@ -169,23 +169,53 @@ } -=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 directives. +This function will return hash containing count of all found C or +C 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; + } @@ -390,10 +420,13 @@ 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;