delete dead code from Not op
[scpubgit/DKit.git] / lib / DX / Op / Not.pm
CommitLineData
71217e42 1package DX::Op::Not;
2
3use DX::Op::FromCode;
4use DX::Var;
5use DX::ArrayStream;
6use DX::Op::Return;
7use Moo;
8
9with 'DX::Role::Op';
10
11has body => (is => 'ro', required => 1);
12
13sub 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 );
71217e42 26 $state->push_return_then($self->next, $invoke)->mark_choice($var);
27}
28
291;