rspace tracing
[scpubgit/DX.git] / lib / DX / ResolutionSpace.pm
index 8342640..4d2bd1f 100644 (file)
@@ -2,6 +2,7 @@ package DX::ResolutionSpace;
 
 use DX::Step::Backtrack;
 use DX::Step::ResolveProposition;
+use DX::Utils qw(expand_deps);
 use DX::Class;
 
 has proposition => (is => 'ro');
@@ -15,8 +16,25 @@ has members => (is => 'ro', required => 1);
 sub for_deparse {
   my ($self) = @_;
   [ statement => [
-    [ symbol => 'rspace' ],
-    [ block => $self->members ],
+    [ symbol => 'resolution_space' ],
+    [ pairs => [
+      [ proposition => $self->proposition ],
+      [ geometry_depends_on => [ block => [
+        map [ statement => [
+          [ symbol => (split '::', ${$_->[0]})[-1] ],
+          [ value_path => [ @{$_}[1..$#$_] ] ],
+        ] ], @{expand_deps($self->geometry_depends_on)}
+      ] ] ],
+      (@{$self->aperture}
+        ? [ aperture => [ block => [
+            map [ statement => [
+              [ symbol => (split '::', ${$_->[0]})[-1] ],
+              [ value_path => [ @{$_}[1..$#$_] ] ],
+            ] ], @{$self->aperture}
+          ] ] ]
+        : ()),
+      [ members => [ block => [ @{$self->members} ] ] ]
+    ] ],
   ] ];
 }