File Coverage

blib/lib/Dallycot/AST/Defined.pm
Criterion Covered Total %
statement 15 25 60.0
branch 0 4 0.0
condition 0 3 0.0
subroutine 5 9 55.5
pod 0 3 0.0
total 20 44 45.4


line stmt bran cond sub pod time code
1             package Dallycot::AST::Defined;
2             our $AUTHORITY = 'cpan:JSMITH';
3              
4             # ABSTRACT: Test if expression evaluates to a defined value
5              
6 23     23   12358 use strict;
  23         44  
  23         700  
7 23     23   97 use warnings;
  23         30  
  23         464  
8              
9 23     23   87 use utf8;
  23         29  
  23         99  
10 23     23   445 use parent 'Dallycot::AST';
  23         35  
  23         106  
11              
12 23     23   1129 use Scalar::Util qw(blessed);
  23         42  
  23         5079  
13              
14             sub to_string {
15 0     0 0   my ($self) = @_;
16              
17 0           return "?(" . ( $self->[0]->to_string ) . ")";
18             }
19              
20             sub to_rdf {
21 0     0 0   my($self, $model) = @_;
22              
23 0           return $model -> apply(
24             $model -> meta_uri('loc:not-empty'),
25             [ $self->[0] ],
26             {}
27             );
28             # my $bnode = $model -> bnode;
29             # $model -> add_type($bnode, 'loc:NotEmpty');
30             # $model -> add_expression($self -> [0]);
31             # return $bnode;
32             }
33              
34             sub execute {
35 0     0 0   my ( $self, $engine ) = @_;
36              
37             return $engine->execute( $self->[0] )->then(
38             sub {
39 0     0     my ($result) = @_;
40 0 0         if ( blessed $result ) {
41 0 0 0       return ( $result->is_defined && !$result->is_empty ? $engine->TRUE : $engine->FALSE );
42             }
43             else {
44 0           return ( $engine->FALSE );
45             }
46             }
47 0           );
48             }
49              
50             1;