dependency map up, some code running
[scpubgit/DX.git] / lib / DX / Value / Dict.pm
CommitLineData
9d759b64 1package DX::Value::Dict;
2
3use DX::Utils qw(string);
4use DX::Class;
5
6with 'DX::Role::StructuredValue';
7
8has '+action_builder' => (
9 handles => [ qw(
10 can_set_value action_for_set_value
11 action_for_add_member action_for_set_member action_for_remove_member
12 ) ]
13);
14
15has members => (is => 'ro', required => 1);
16
17sub get_member_at {
18 my ($self, $at) = @_;
efad53c4 19 $self->members->{ref($at) ? $at->string_value : $at};
9d759b64 20}
21
22sub with_member_at {
23 my ($self, $at, $value) = @_;
24 $self->but(
efad53c4 25 members => {
26 %{$self->members},
27 (ref($at) ? $at->string_value : $at) => $value
28 }
9d759b64 29 );
30}
31
32sub without_member_at {
33 my ($self, $at) = @_;
34 my %members = %{$self->members};
35 delete $members{$at};
36 $self->but(members => \%members);
37}
38
391;