File Coverage

blib/lib/OPTIMADE/Filter/Modifiable.pm
Criterion Covered Total %
statement 14 16 87.5
branch 3 4 75.0
condition 3 3 100.0
subroutine 4 4 100.0
pod 0 1 0.0
total 24 28 85.7


line stmt bran cond sub pod time code
1             package OPTIMADE::Filter::Modifiable;
2              
3 7     7   81502 use strict;
  7         30  
  7         216  
4 7     7   37 use warnings;
  7         13  
  7         219  
5              
6 7     7   38 use Scalar::Util qw(blessed);
  7         13  
  7         1422  
7              
8             sub modify
9             {
10 29     29 0 673 my $node = shift;
11 29         42 my $code = shift;
12              
13 29 100 100     172 if( blessed $node &&
    50          
14             $node->isa( OPTIMADE::Filter::Modifiable:: ) ) {
15 12         49 return $node->modify( $code, @_ );
16             } elsif( ref $node eq 'ARRAY' ) {
17 0         0 return [ map { modify( $_, $code, @_ ) } @$node ];
  0         0  
18             } else {
19 17         40 return $code->( $node, @_ );
20             }
21             }
22              
23             1;