use DX::Utils qw(step INDICES_OF EXISTENCE_OF CONTENTS_OF string);
use DX::ActionBuilder::ProxySetToAdd;
+use DX::ActionBuilder::Null;
use DX::Class;
with 'DX::Role::Predicate';
} elsif (
!$value->is_set
and $value->action_builder->isa('DX::ActionBuilder::UnsetValue')
- and my $p = $coll->identity_path
+ and my $p = $coll->value_path
) {
my @path = (@$p, $key->string_value);
my $ab = DX::ActionBuilder::ProxySetToAdd->new(
);
my $set = $value->action_for_set_value(
$value->but(
- identity_path => \@path,
action_builder => $ab
)
);
}
: ()
),
- ($key->can_set_value
+ (!$key->is_set
+ && $key->action_builder->isa('DX::ActionBuilder::UnsetValue')
? map {
- my $set_key = $key->action_for_set_value(string(my $kstr = $_));
+ my $set_key = DX::Action::SetValue->new(
+ target_path => $key->action_builder->target_path,
+ new_value => DX::ActionBuilder::Null->new(
+ target_path => $key->action_builder->target_path,
+ )->apply_to_value(string(my $kstr = $_))
+ );
map $_->but_first($set_key)
->but_with_dependencies_on(
[ undef ,=>