Commit | Line | Data |
b40e416a |
1 | package DX::Op::MemberOf; |
2 | |
3 | use DX::ArrayStream; |
4 | use Moo; |
5 | |
6 | with 'DX::Role::Op'; |
7 | |
8 | has member_var => (is => 'ro', required => 1); |
9 | has coll_name => (is => 'ro', required => 1); |
10 | |
11 | sub run { |
12 | my ($self, $state) = @_; |
13 | my $member = $state->scope_var($self->member_var); |
14 | die "member bound" if $member->is_bound; |
15 | my $set = $state->facts->{$self->coll_name}; |
16 | my $stream = DX::ArrayStream->from_array(@{$set}{sort keys %$set}); |
17 | return $state->bind_stream_then($member, $stream, $self->next); |
18 | } |
19 | |
20 | 1; |