1 package DX::Value::Dict;
3 use DX::Utils qw(string);
6 with 'DX::Role::StructuredValue';
8 has '+action_builder' => (
10 can_set_value action_for_set_value
11 can_add_member action_for_add_member action_for_remove_member
15 has members => (is => 'ro', required => 1);
18 [ dict => $_[0]->members ]
21 sub index_list { sort keys %{$_[0]->members} }
25 $self->members->{ref($at) ? $at->string_value : $at};
29 my ($self, $at, $value) = @_;
33 (ref($at) ? $at->string_value : $at) => $value
38 sub without_member_at {
40 my %members = %{$self->members};
42 $self->but(members => \%members);
47 my $m = $self->members;
48 +{ map +($_ => $m->{$_}->to_data), $self->index_list };