BioX-Workflow-Command
view release on metacpan or search on metacpan
lib/BioX/Workflow/Command/run/Rules/Directives/Walk.pm view on Meta::CPAN
$self->$builder( $k, $v );
return 1;
}
}
}
return 0;
}
=head3 process_directive
=cut
sub process_directive {
my $self = shift;
my $k = shift;
my $v = shift;
my $path = shift;
#TODO Need to keep track of errors here
if ( ref($v) ) {
walk {
wanted => sub { $self->walk_directives(@_) }
},
$self->$k;
}
else {
my $text = '';
$text = $self->interpol_directive($v) if $v;
$self->$k($text);
}
}
=head3 walk_directives
Invoke with
walk { wanted => sub { $self->directives(@_) } }, $self->other_thing;
Acts funny with $self->some_other_thing is not a reference
=cut
sub walk_directives {
my $self = shift;
my $ref = shift;
return if ref($ref);
return unless $ref;
my $text = '';
$text = $self->interpol_directive($ref) if $ref;
$self->update_directive($text);
}
=head3 update_directive
Take the values from walk_directive and update the directive
=cut
sub update_directive {
my $self = shift;
my $text = shift;
my ( $key, $container, $index );
$container = $Data::Walk::container;
$key = $Data::Walk::key;
$index = $Data::Walk::index;
if ( $Data::Walk::type eq 'HASH' && $key ) {
$container->{$key} = $text;
}
elsif ( $Data::Walk::type eq 'ARRAY' ) {
$container->[$index] = $text;
}
else {
#We are getting the whole hash, just return
return;
}
}
1;
( run in 1.929 second using v1.01-cache-2.11-cpan-df04353d9ac )