From: Matt S Trout <mst@shadowcat.co.uk>
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;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 {