dependency map up, some code running
[scpubgit/DX.git] / lib / DX / Role / Predicate.pm
CommitLineData
9d759b64 1package DX::Role::Predicate;
2
3use List::Util qw(reduce);
4use DX::Utils qw(step);
5use DX::Role;
6
7sub resolution_step_for {
8 my ($self, @args) = @_;
9 my ($last, @rest) = reverse $self->_possible_resolution_list(@args);
10 return undef unless $last;
11 my $targ = $last;
12 $targ = $_->but_with_alternative_step($targ) for @rest;
13 return $targ;
14}
15
16sub _make_equal {
17 my ($self, $left, $right) = @_;
18 if ($left->equals($right)) {
19 return step(
20 actions => [],
21 depends_on => [ $left, $right ],
22 );
23 }
24 return (
25 do {
26 if ($left->is_set and my $set = $right->action_for_set_value($left)) {
27 step(
28 actions => [ $set ],
29 depends_on => [ [ $right => [ $left, $right ] ] ],
30 )
31 } else {
32 ()
33 }
34 },
35 do {
36 if ($right->is_set and my $set = $left->action_for_set_value($right)) {
37 step(
38 actions => [ $set ],
39 depends_on => [ [ $left => [ $left, $right ] ] ],
40 )
41 } else {
42 ()
43 }
44 },
45 );
46}
47
48sub selection_depends_on {
49 my ($self, @args) = @_;
50 \@args;
51}
52
531;