factor out arg handling
[scpubgit/DKit.git] / lib / DX / Op / MemberOf.pm
index 94eceb2..2ff460e 100644 (file)
@@ -6,13 +6,17 @@ use Moo;
 with 'DX::Role::Op';
 
 has member_var => (is => 'ro', required => 1);
-has coll_name => (is => 'ro', required => 1);
+has coll_var => (is => 'ro', required => 1);
 
 sub run {
   my ($self, $state) = @_;
-  my $member = $state->scope_var($self->member_var);
+  ($state, my %args) = $self->_expand_args($state,
+    member => $self->member_var,
+    of => $self->coll_var
+  );
+  my ($member, $of) = @args{qw(member of)};
   die "member bound" if $member->is_bound;
-  my $set = $state->facts->{$self->coll_name};
+  my $set = $state->facts->{$of->bound_value};
   my $stream = DX::ArrayStream->from_array(@{$set}{sort keys %$set});
   return $state->bind_stream_then($member, $stream, $self->next);
 }