]> git.donarmstrong.com Git - debbugs.git/commitdiff
allow apply to return > 1 object per collection member
authorDon Armstrong <don@donarmstrong.com>
Sun, 30 Jun 2019 22:55:23 +0000 (15:55 -0700)
committerDon Armstrong <don@donarmstrong.com>
Sun, 30 Jun 2019 22:55:23 +0000 (15:55 -0700)
Debbugs/Collection.pm
Debbugs/Collection/Bug.pm

index 350a03f777b427a0ea0bc139ab4d722788ce3ddd..6e3d49d95ed9e30f3caca34035cb527be0a89e52 100644 (file)
@@ -116,9 +116,15 @@ locally to each member object
 
 Returns the keys of the members of this collection joined
 
-=head2 $collection->apply({$_*2}) $collection->map({$_*2})
+=head2 $collection->apply({$_*2})
 
-Return the list of applying BLOCK to each member
+Return the list of applying BLOCK to each member; each member can return 0 or
+more results
+
+=head2 $collection->map({$_*2})
+
+Returns the list of applying BLOCK to each member; each member should return
+exactly one result
 
 =head2 $collection->sort({$a <=> $b})
 
@@ -137,12 +143,21 @@ has 'members' => (is => 'bare',
                              count => 'count',
                              _get_member => 'get',
                               grep => 'grep',
-                              apply => 'apply',
                               map => 'map',
                               sort => 'sort',
                             },
                 );
 
+sub apply {
+    my $self = shift;
+    my $block = shift;
+    my @r;
+    for ($self->members) {
+        push @r,$block->();
+    }
+    return @r;
+}
+
 sub members_ref {
     my $self = shift;
     return [$self->members];
index 2a9bbe29e11792bb3dcb11ba1f8e947e17e3206a..63ce8095ead0e49b5c2b04f0e1d81d1992bd37c3 100644 (file)
@@ -200,7 +200,7 @@ sub member_key {
 sub load_related_packages_and_versions {
     my $self = shift;
     my @related_packages_and_versions =
-        $self->map(sub {$_->related_packages_and_versions});
+        $self->apply(sub {$_->related_packages_and_versions});
     $self->package_collection->
         add_packages_and_versions(@related_packages_and_versions);
 }