sma backtracking (smart will be later ;)
[scpubgit/DX.git] / lib / DX / ResolutionSpace.pm
index 51b8490..a3e82b5 100644 (file)
@@ -2,7 +2,7 @@ package DX::ResolutionSpace;
 
 use DX::Step::Backtrack;
 use DX::Step::ResolveProposition;
-use DX::Utils qw(expand_deps);
+use DX::Utils qw(compact_deps);
 use DX::Class;
 
 has proposition => (is => 'ro', isa => Proposition);
@@ -25,7 +25,7 @@ sub for_deparse {
         map [ statement => [
           [ symbol => (split '::', ${$_->[0]})[-1] ],
           [ value_path => [ @{$_}[1..$#$_] ] ],
-        ] ], @{expand_deps($self->geometry_depends_on)}
+        ] ], @{$self->geometry_depends_on}
       ] ] ],
       (@{$self->aperture}
         ? [ aperture => [ block => [
@@ -58,4 +58,10 @@ sub next_step {
   return "DX::Step::${step_type}"->new(resolution_space => $self);
 }
 
+sub with_geometry_dependencies {
+  my ($self, $deps) = @_;
+  my $new_deps = compact_deps([ @{$self->geometry_depends_on}, @$deps ]);
+  return $self->but(geometry_depends_on => $new_deps);
+}
+
 1;