=head1 VERSION
-Version 0.01
+Version 0.02
=cut
-our $VERSION = '0.01';
+our $VERSION = '0.02';
=head1 SYNOPSIS
my $source;
$self->{config}->iterate_inputs( sub {
- my $input = shift;
+ my ($input, $database) = @_;
my $path = $input->{normalize}->{path} || return;
my $full = $self->{base_path} ? $self->{base_path} . '/' . $path : $path;
$log->logdie("normalization input $full doesn't exist") unless (-e $full);
my $s = read_file( $full ) || $log->logdie("can't read $full: $!");
- $log->debug("adding $path to parser [",length($s)," bytes]");
+ my $input_name = $input->{name} || $log->logdie("can't deduce name of input: ", dump( $input ));
+ $log->debug("$database/$input_name: adding $path to parser [",length($s)," bytes]");
$source .= $s;
+ $self->{valid_inputs}->{$database}->{$input_name}++;
} );
$log->debug("collected ", length($source), " bytes of source");
$log->logdie('no source found in object') unless ($self->{source});
+ $log->debug("valid_inputs = ", dump( $self->{valid_inputs} ));
+
my $Document = PPI::Document->new( \$self->{source} ) || $log->logdie("can't parse source:\n", $self->{source});
$Document->prune('PPI::Token::Whitespace');
$log->debug("create: $create");
- $create =~ s/\s+/ /gs;
+ $log->logdie("invalid database $e[3]" ) unless $self->valid_database( $e[3] );
+ $log->logdie("invalid input $e[5] of database $e[3]", ) unless $self->valid_database_input( $e[3], $e[5] );
+
$eval_create->{ $e[3] }->{ $e[5] } .= $create;
if ($#e < 10) {
return 1;
}
+=head2 valid_database
+
+ my $ok = $parse->valid_database('key');
+
+=cut
+
+sub valid_database {
+ my $self = shift;
+
+ my $database = shift || return;
+ $database =~ s/['"]//g;
+
+ return defined($self->{valid_inputs}->{$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) = @_;
+ $database =~ s/['"]//g;
+ $input =~ s/['"]//g;
+
+ return defined($self->{valid_inputs}->{$database}->{$input});
+}
+
=head1 AUTHOR
Dobrica Pavlinusic, C<< <dpavlin@rot13.org> >>
#!/usr/bin/perl -w
use strict;
-use Test::More tests => 8;
+use Test::More tests => 19;
use Test::Exception;
use blib;
debug => $debug,
), "new");
+my $inputs = {
+ foo => [ qw/foo-input1 foo-input2/ ],
+ bar => [ qw/bar-input/ ],
+ baz => [ qw/baz-input/ ],
+};
+
+foreach my $db (qw/foo bar baz/) {
+ ok($parser->valid_database($db), "database $db");
+ ok($inputs->{$db}, "has known inputs");
+ diag "valid inputs = ", dump($inputs->{$db});
+ foreach my $i (@{ $inputs->{$db} }) {
+ ok($parser->valid_database_input($db,$i), "input $i");
+ }
+}
+ok(! $parser->valid_database('non-existant'), "no database");
+
ok($parser->{source}, "source exist");
ok($parser->parse, 'parse');