format aperture in backtrack trace
[scpubgit/DX.git] / lib / DX / Predicate / Eq.pm
CommitLineData
2e93f662 1package DX::Predicate::Eq;
9d759b64 2
fe5af11f 3use DX::Utils qw(rspace res CONTENTS_OF expand_deps);
9d759b64 4use DX::Class;
5
6with 'DX::Role::Predicate';
7
7f385fb2 8sub _resolution_space_for {
255e1884 9 my ($self, $left, $right) = @_;
7f385fb2 10
fe5af11f 11 my $deps = expand_deps([
12 [ CONTENTS_OF ,=> $left ], [ CONTENTS_OF ,=> $right ]
13 ]);
7f385fb2 14
6aa36401 15 my $aperture = [ map @{$_->aperture_for_set_value}, $left, $right ];
16
255e1884 17 if ($left->equals($right)) {
7f385fb2 18 return rspace(
19 geometry_depends_on => $deps,
6aa36401 20 aperture => $aperture,
7f385fb2 21 members => [
22 res(
23 actions => [],
24 veracity_depends_on => $deps,
25 )
26 ]
255e1884 27 );
28 }
7f385fb2 29
30 my @members = map {
31 my ($set_this, $to_this) = @$_;
32 res(
33 actions => [ $set_this->action_for_set_value($to_this) ],
34 veracity_depends_on => $deps,
35 );
36 } grep {
37 $_->[0]->can_set_value
38 } (
39 [ $left, $right ],
40 [ $right, $left ],
41 );
42
43 return rspace(
44 geometry_depends_on => $deps,
6aa36401 45 aperture => $aperture,
7f385fb2 46 members => \@members,
255e1884 47 );
9d759b64 48}
49
501;