Commit | Line | Data |
2e93f662 |
1 | package DX::Predicate::Eq; |
9d759b64 |
2 | |
255e1884 |
3 | use DX::Utils qw(step CONTENTS_OF); |
9d759b64 |
4 | use DX::Class; |
5 | |
6 | with 'DX::Role::Predicate'; |
7 | |
8 | sub _possible_resolution_list { |
255e1884 |
9 | my ($self, $left, $right) = @_; |
10 | if ($left->equals($right)) { |
11 | return step( |
12 | actions => [], |
13 | depends_on => [ |
8c6c9551 |
14 | [ CONTENTS_OF ,=> $left ], [ CONTENTS_OF ,=> $right ] |
255e1884 |
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 => [ |
8c6c9551 |
24 | [ CONTENTS_OF ,=> $left ], [ CONTENTS_OF ,=> $right ] |
255e1884 |
25 | ] |
26 | ) |
27 | } else { |
28 | () |
29 | } |
30 | }, |
31 | do { |
32 | if ($right->is_set and my $set = $left->action_for_set_value($right)) { |
33 | step( |
34 | actions => [ $set ], |
35 | depends_on => [ |
8c6c9551 |
36 | [ CONTENTS_OF ,=> $left ], [ CONTENTS_OF ,=> $right ] |
255e1884 |
37 | ] |
38 | ) |
39 | } else { |
40 | () |
41 | } |
42 | }, |
43 | ); |
9d759b64 |
44 | } |
45 | |
46 | 1; |