disturbingly, bound values appear to actually work
[scpubgit/DX.git] / lib / DX / ActionBuilder / BoundValue.pm
1 package DX::ActionBuilder::BoundValue;
2
3 use DX::Action::SetBoundValue;
4 #use DX::Action::AddBoundValue;
5 use DX::Class;
6
7 with 'DX::Role::ActionBuilder';
8
9 has target_path => (is => 'ro', required => 1);
10
11 has rebind_path => (is => 'ro', required => 1);
12
13 has bound_to_path => (is => 'ro', required => 1);
14
15 has inner_action_builder => (is => 'ro', required => 1);
16
17 sub action_for_set_value {
18   my ($self, $value) = @_;
19   my $inner_action = $self->inner_action_builder->action_for_set_value($value);
20   return undef unless $inner_action;
21   DX::Action::SetBoundValue->new(
22     target_path => $self->target_path,
23     rebind_path => $self->rebind_path,
24     new_value => $value->but_set_action_builder($self)
25                        ->but_set_identity_path($self->bound_to_path),
26     inner_action => $inner_action,
27   )
28 }
29
30 1;