X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDX%2FActionBuilder%2FBoundValue.pm;h=7c06e1c9b8bc6b98325bbcb9538747ab27891b03;hb=6aa3640198d41ee9e2c8fcdf28a9aeebd4db7b06;hp=ba92ab9a7edb9fcbee4bfb0745d1cc770967d6f8;hpb=1c02730b4c397d64a0ee1b2efe1bbf30626791ed;p=scpubgit%2FDX.git diff --git a/lib/DX/ActionBuilder/BoundValue.pm b/lib/DX/ActionBuilder/BoundValue.pm index ba92ab9..7c06e1c 100644 --- a/lib/DX/ActionBuilder/BoundValue.pm +++ b/lib/DX/ActionBuilder/BoundValue.pm @@ -2,6 +2,7 @@ package DX::ActionBuilder::BoundValue; use DX::Action::SetBoundValue; use DX::Action::AddBoundValue; +use DX::Utils qw(:event_types); use DX::Class; with 'DX::Role::ActionBuilder'; @@ -16,6 +17,15 @@ has inner_action_builder => (is => 'ro', required => 1); sub can_set_value { shift->inner_action_builder->can_set_value } +sub aperture_for_set_value { + my ($self) = @_; + return [] unless $self->can_set_value; + [ + [ VALUE_SET ,=> @{$self->target_path} ], + @{$self->inner_action_builder->aperture_for_set_value}, + ] +} + sub action_for_set_value { my ($self, $value) = @_; my $inner_action = $self->inner_action_builder->action_for_set_value($value); @@ -31,6 +41,15 @@ sub action_for_set_value { sub can_add_member { shift->inner_action_builder->can_add_member } +sub aperture_for_add_member { + my ($self, $at) = @_; + return [] unless $self->can_add_member; + [ + [ VALUE_SET ,=> @{$self->target_path} ], + @{$self->inner_action_builder->aperture_for_add_member($at)}, + ] +} + sub action_for_add_member { my ($self, $at, $value) = @_; $at = $at->string_value if ref($at);