indirect via resolve_value method
[scpubgit/DKit.git] / lib / DX / Result.pm
CommitLineData
deec7cc4 1package DX::Result;
2
3use Moo;
4
5has _state => (is => 'ro', required => 1, init_arg => 'state');
6
7sub var_names {
8 sort keys %{$_[0]->_state->scope};
9}
10
11sub actions {
12 my ($self) = @_;
13 my $by_id = $self->_state->by_id;
14 return map $_->action, grep $_->has_action, values %$by_id;
15}
16
60c182d8 17sub independent_actions {
18 my ($self) = @_;
19 return grep !@{$_->dependencies}, $self->actions;
20}
21
22sub expand_action_dependencies {
deec7cc4 23 my ($self, $action) = @_;
24 my $by_id = $self->_state->by_id;
25 return map $by_id->{$_}->action, @{$action->dependencies};
26}
27
28sub value_for {
29 my ($self, $name) = @_;
0676b282 30 my $state = $self->_state;
31 $state->resolve_value($state->scope_var($name));
32}
33
34sub all_values {
35 my ($self) = @_;
36 return +{ map +($_ => $self->value_for($_)), $self->var_names };
deec7cc4 37}
38
391;