pervasive type constraints
[scpubgit/DX.git] / lib / DX / Role / Value.pm
1 package DX::Role::Value;
2
3 use DX::ActionBuilder::Null;
4 use DX::Role;
5
6 my $_null = DX::ActionBuilder::Null->new;
7
8 has action_builder => (
9   is => 'ro',
10   isa => ActionBuilder,
11   default => sub { $_null },
12   handles => [ qw(can_set_value aperture_for_set_value action_for_set_value) ],
13 );
14
15 sub value_path { shift->action_builder->target_path }
16
17 sub is_set { 1 }
18
19 sub but_set_action_builder {
20   my ($self, $ab) = @_;
21   $self->but(action_builder => $ab);
22 }
23
24 requires 'to_data';
25
26 sub equals {
27   my ($self, $other) = @_;
28   require YAML;
29   YAML::Dump($self->to_data) eq YAML::Dump($other->to_data);
30 }
31
32 1;