X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDX%2FRuleSet.pm;h=9449f9207cbbd4b8d2f987d194c75aea12ec38a8;hb=f5a02c91b10ef340dce1e1dacee0a761254f4d80;hp=1fbb924a015da9757d2bf4e0550faecb1aa20636;hpb=138613a80580c7ce9808a16591ec7c9c7ea6578e;p=scpubgit%2FDKit.git diff --git a/lib/DX/RuleSet.pm b/lib/DX/RuleSet.pm index 1fbb924..9449f92 100644 --- a/lib/DX/RuleSet.pm +++ b/lib/DX/RuleSet.pm @@ -18,6 +18,7 @@ use DX::Op::Exists; use DX::Op::Predicate; use DX::Op::HasAction; use DX::Op::FindAll; +use DX::Op::ForEach; use List::Util qw(reduce); has rules => (is => 'ro', default => sub { {} }); @@ -81,13 +82,22 @@ sub _expand_op_not { sub _expand_op_findall { my ($self, $coll_name, $var_name, @contents) = @_; - my $findall = DX::Op::FindAll->new( + DX::Op::FindAll->new( coll_name => $coll_name, var_name => $var_name, body => $self->expand_and_link(DX::Op::Return->new, @contents), ); } +sub _expand_op_foreach { + my ($self, $var_name, $body, $each_body) = @_; + DX::Op::ForEach->new( + var_name => $var_name, + body => $self->expand_and_link(DX::Op::Return->new, @$body), + each_body => $self->expand_and_link(DX::Op::Return->new, @$each_body), + ); +} + sub _expand_op_member_of { my ($self, $member_var, $coll_var) = @_; DX::Op::MemberOf->new(