From cfd7a8f2d3990c8fbc8bb8012d99fdc467c46300 Mon Sep 17 00:00:00 2001 From: Don Armstrong Date: Sun, 30 Jun 2019 15:55:23 -0700 Subject: [PATCH] allow apply to return > 1 object per collection member --- Debbugs/Collection.pm | 21 ++++++++++++++++++--- Debbugs/Collection/Bug.pm | 2 +- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/Debbugs/Collection.pm b/Debbugs/Collection.pm index 350a03f..6e3d49d 100644 --- a/Debbugs/Collection.pm +++ b/Debbugs/Collection.pm @@ -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]; diff --git a/Debbugs/Collection/Bug.pm b/Debbugs/Collection/Bug.pm index 2a9bbe2..63ce809 100644 --- a/Debbugs/Collection/Bug.pm +++ b/Debbugs/Collection/Bug.pm @@ -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); } -- 2.39.2