lift _make_equal from predicate role to Eq.pm
[scpubgit/DX.git] / lib / DX / Predicate / Eq.pm
CommitLineData
2e93f662 1package DX::Predicate::Eq;
9d759b64 2
255e1884 3use DX::Utils qw(step CONTENTS_OF);
9d759b64 4use DX::Class;
5
6with 'DX::Role::Predicate';
7
8sub _possible_resolution_list {
255e1884 9 my ($self, $left, $right) = @_;
10 if ($left->equals($right)) {
11 return step(
12 actions => [],
13 depends_on => [
14 [ undef ,=> [ CONTENTS_OF ,=> $left ], [ CONTENTS_OF ,=> $right ] ]
15 ],
16 );
17 }
18 return (
19 do {
20 if ($left->is_set and my $set = $right->action_for_set_value($left)) {
21 step(
22 actions => [ $set ],
23 depends_on => [
24 [ $right =>
25 [ CONTENTS_OF ,=> $left ], [ CONTENTS_OF ,=> $right ]
26 ]
27 ]
28 )
29 } else {
30 ()
31 }
32 },
33 do {
34 if ($right->is_set and my $set = $left->action_for_set_value($right)) {
35 step(
36 actions => [ $set ],
37 depends_on => [
38 [ $left =>
39 [ CONTENTS_OF ,=> $left ], [ CONTENTS_OF ,=> $right ]
40 ]
41 ]
42 )
43 } else {
44 ()
45 }
46 },
47 );
9d759b64 48}
49
501;