From: Matt S Trout Date: Wed, 15 Feb 2017 21:10:23 +0000 (+0000) Subject: move dep expansion into step() and clean up ResolveProposition.pm X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=7248abc94d2e5d6e484c65a4ac8d97d1b28f45cc;hp=76329453db125622ef0aac459d8adf898ff03ddc;p=scpubgit%2FDX.git move dep expansion into step() and clean up ResolveProposition.pm --- diff --git a/lib/DX/Step/ResolveProposition.pm b/lib/DX/Step/ResolveProposition.pm index 6f91b9b..173a0fa 100644 --- a/lib/DX/Step/ResolveProposition.pm +++ b/lib/DX/Step/ResolveProposition.pm @@ -12,20 +12,7 @@ with 'DX::Role::Step'; has actions => (is => 'ro', isa => ArrayRef[Action], required => 1); -#has depends_on => (is => 'ro', isa => DependencyGroupList, required => 1); - -has depends_on => (is => 'ro', required => 1, coerce => sub { - my ($deps) = @_; - my @exp; - DEP: foreach my $dep (@$deps) { - my ($type, @path) = @$dep; - push @exp, [ - $type, - map { ref() ? @{$_->value_path or next DEP} : $_ } @path - ]; - } - \@exp -}); +has depends_on => (is => 'ro', isa => ArrayRef[DependencySpec], required => 1); has resolves => (is => 'ro', isa => Proposition); diff --git a/lib/DX/Utils.pm b/lib/DX/Utils.pm index 243879f..0cb207d 100644 --- a/lib/DX/Utils.pm +++ b/lib/DX/Utils.pm @@ -44,9 +44,25 @@ our @VALUE_SET = (TYPE_OF(), INDICES_OF(), CONTENTS_OF()); sub trace { } +sub _expand_dep { + my ($type, @path) = @{$_[0]}; + my @expanded = map { + ref() ? @{$_->value_path or return ()} : $_ + } @path; + return [ $type, @expanded ]; +} + +sub _expand_deps { + [ map _expand_dep($_), @{$_[0]} ] +} + sub step { require DX::Step::ResolveProposition; - DX::Step::ResolveProposition->new(@_); + my %args = @_; + DX::Step::ResolveProposition->new( + %args, + depends_on => _expand_deps($args{depends_on}), + ); } sub string {