r1000@llin: dpavlin | 2006-09-25 15:16:49 +0200
authorDobrica Pavlinusic <dpavlin@rot13.org>
Mon, 25 Sep 2006 13:24:09 +0000 (13:24 +0000)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Mon, 25 Sep 2006 13:24:09 +0000 (13:24 +0000)
 support multiple lookups on same input file
 move _read_sources and _parse_lookups to private functions

git-svn-id: svn+ssh://mjesec/home/dpavlin/svn/webpac2/trunk@703 07558da8-63fa-0310-ba24-9fe276d99e06

lib/WebPAC/Parser.pm
t/2-parse.t

index 96ea07b..4b7ee3f 100644 (file)
@@ -17,11 +17,11 @@ WebPAC::Parser - parse perl normalization configuration files and mungle it
 
 =head1 VERSION
 
-Version 0.04
+Version 0.05
 
 =cut
 
-our $VERSION = '0.04';
+our $VERSION = '0.05';
 
 =head1 SYNOPSIS
 
@@ -61,20 +61,80 @@ sub new {
 
        $log->logdie("can't iterate_inputs over this config object") unless ($self->{config}->can('iterate_inputs'));
 
-       $self->read_sources;
+       $self->_read_sources;
 
        $self ? return $self : return undef;
 }
 
-=head2 read_sources
+=head2 lookup_create_rules
+
+  my $source = $parser->lookup_create_rules($database, $input);
+
+=cut
+
+sub lookup_create_rules {
+       my $self = shift;
+       my ($database,$input) = @_;
+       return $self->{_lookup_create}->{ _q($database) }->{ _q($input) };
+}
+
+=head2 valid_database
+
+  my $ok = $parse->valid_database('key');
+
+=cut
+
+sub valid_database {
+       my $self = shift;
+
+       my $database = shift || return;
+
+       return defined($self->{valid_inputs}->{ _q($database) });
+}
+
+=head2 valid_database_input
+
+  my $ok = $parse->valid_database('database_key','input_name');
+
+=cut
+
+sub valid_database_input {
+       my $self = shift;
+
+       my ($database,$input) = @_;
+       return defined($self->{valid_inputs}->{ _q($database) }->{ _q($input) });
+}
+
+=head2 depends
+
+Return all databases and inputs on which specified one depends
+
+  $depends_on = $parser->depends('database','input');
+
+=cut
+
+sub depends {
+       my $self = shift;
+       my ($database,$input) = @_;
+       $self->_get_logger->debug("depends($database,$input)");
+       return unless (
+               defined( $self->{depends}->{ _q($database) } ) &&
+               defined( $self->{depends}->{ _q($database) }->{ _q($input) } )
+       );
+       return $self->{depends}->{ _q($database) }->{ _q($input) };
+}
+
+=head1 PRIVATE
+
+=head2 _read_sources
 
-  my $source_files = $parser->read_sources;
+  my $source_files = $parser->_read_sources;
 
 Called by L</new>.
 
 =cut
 
-sub read_sources {
+sub _read_sources {
        my $self = shift;
 
        my $log = $self->_get_logger();
@@ -105,7 +165,7 @@ sub read_sources {
                        $self->{valid_inputs}->{$database}->{$input_name}++;
 
                        push @lookups, sub {
-                               $self->parse_lookups( $database, $input_name, $full, $s );
+                               $self->_parse_lookups( $database, $input_name, $full, $s );
                        };
 
                        $nr++;
@@ -120,17 +180,17 @@ sub read_sources {
        return $nr;
 }
 
-=head2 parse_lookups
+=head2 _parse_lookups
 
-  $parser->parse_lookups($database,$input,$path,$source);
+  $parser->_parse_lookups($database,$input,$path,$source);
 
-Called for each normalize source in each input by L</new>
+Called for each normalize source (rules) in each input by L</read_sources>
 
 It will report invalid databases and inputs in error log after parsing.
 
 =cut
 
-sub parse_lookups {
+sub _parse_lookups {
        my $self = shift;
        my ($database, $input, $path, $source) = @_;
 
@@ -267,66 +327,6 @@ sub parse_lookups {
 }
 
 
-=head2 lookup_create_rules
-
-  my $source = $parser->lookup_create_rules($database, $input);
-
-=cut
-
-sub lookup_create_rules {
-       my $self = shift;
-       my ($database,$input) = @_;
-       return $self->{_lookup_create}->{ _q($database) }->{ _q($input) };
-}
-
-=head2 valid_database
-
-  my $ok = $parse->valid_database('key');
-
-=cut
-
-sub valid_database {
-       my $self = shift;
-
-       my $database = shift || return;
-
-       return defined($self->{valid_inputs}->{ _q($database) });
-}
-
-=head2 valid_database_input
-
-  my $ok = $parse->valid_database('database_key','input_name');
-
-=cut
-
-sub valid_database_input {
-       my $self = shift;
-
-       my ($database,$input) = @_;
-       return defined($self->{valid_inputs}->{ _q($database) }->{ _q($input) });
-}
-
-=head2 depends
-
-Return all databases and inputs on which specified one depends
-
-  $depends_on = $parser->depends('database','input');
-
-=cut
-
-sub depends {
-       my $self = shift;
-       my ($database,$input) = @_;
-       $self->_get_logger->debug("depends($database,$input)");
-       return unless (
-               defined( $self->{depends}->{ _q($database) } ) &&
-               defined( $self->{depends}->{ _q($database) }->{ _q($input) } )
-       );
-       return $self->{depends}->{ _q($database) }->{ _q($input) };
-}
-
-=head1 PRIVATE
-
 =head2 _q
 
 Strip single or double quotes around value
index 60eb0c9..bbd8f04 100755 (executable)
@@ -61,26 +61,26 @@ diag "depends = ",dump($d);
 my $expected_depend = {
    foo => {
             "foo-input1" => {
-                              bar => { "bar-input" => "200-a-200-e" },
-                              baz => { "baz-input" => "200-a" },
-                              foo => { "foo-input1" => 11, "foo-input2" => 11 },
+                              bar => { "bar-input" => { "200-a-200-e" => 1 } },
+                              baz => { "baz-input" => { "200-a" => 1 } },
+                              foo => { "foo-input1" => { 11 => 1 }, "foo-input2" => { 11 => 1 } },
                             },
             "foo-input2" => {
-                              bar => { "bar-input" => "900-x" },
-                              baz => { "baz-input" => "900-x" },
-                              foo => { "foo-input1" => "245-a", "foo-input2" => "245-a" },
+                              bar => { "bar-input" => { "900-x" => 1 } },
+                              baz => { "baz-input" => { "900-x" => 1 } },
+                              foo => { "foo-input1" => { "245-a" => 1 }, "foo-input2" => { "245-a" => 1 } },
                             },
           },
    bar => {
             "bar-input" => {
-                  baz => { "baz-input" => "900-x" },
-                  foo => { "foo-input1" => "245-a" },
+                  baz => { "baz-input" => { "900-x" => 1 } },
+                  foo => { "foo-input1" => { "245-a" => 1 } },
                 },
           },
    baz => {
             "baz-input" => {
-                  bar => { "bar-input" => "900-x" },
-                  foo => { "foo-input2" => "245-a" },
+                  bar => { "bar-input" => { "900-x" => 1 } },
+                  foo => { "foo-input2" => { "245-a" => 1 } },
                 },
           },
 };