delete dead code from Not op
[scpubgit/DKit.git] / lib / DX / Op / Not.pm
1 package DX::Op::Not;
2
3 use DX::Op::FromCode;
4 use DX::Var;
5 use DX::ArrayStream;
6 use DX::Op::Return;
7 use Moo;
8
9 with 'DX::Role::Op';
10
11 has body => (is => 'ro', required => 1);
12
13 sub run {
14   my ($self, $state) = @_;
15   my $var = DX::Var->new(id => "rule:not")
16                    ->with_stream(DX::ArrayStream->from_array(
17                        $self->body, DX::Op::Return->new
18                      ));
19   my $invoke = DX::Op::FromCode->new(
20     code => sub {
21       my ($self, $state) = @_;
22       my $op = $var->bound_value;
23       $state->then($op);
24     }
25   );
26   $state->push_return_then($self->next, $invoke)->mark_choice($var);
27 }
28
29 1;