X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDX%2FRuleSet.pm;h=bc8167fd96fad40d2b3f1e2c32db896ccaa6b3ed;hb=37e9670dc1bf2c37386b1b84afe94877256b8359;hp=09a2ff5ad622f9ef058d8ce26f8aa7083f730148;hpb=7a0670cd4e8498fff81f07ec1686ff5d0c899f64;p=scpubgit%2FDKit.git diff --git a/lib/DX/RuleSet.pm b/lib/DX/RuleSet.pm index 09a2ff5..bc8167f 100644 --- a/lib/DX/RuleSet.pm +++ b/lib/DX/RuleSet.pm @@ -14,10 +14,19 @@ use DX::Op::ProposeAction; use DX::Op::Materialize; use DX::Op::Prop; use DX::Op::Exists; +use DX::Op::Predicate; use List::Util qw(reduce); has rules => (is => 'ro', default => sub { {} }); +sub add_predicate { + my ($self, $name, $vars, @cases) = @_; + my $full_name = join('/', $name, scalar @$vars); + push @{$self->rules->{$full_name}}, DX::Op::Predicate->new( + arg_names => $vars, arg_cases => \@cases + ); +} + sub add_rule { my ($self, $name, $vars, @body) = @_; my $full_name = join('/', $name, scalar @$vars);