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 => [ |
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 | |
50 | 1; |