Acme-IEnumerable
view release on metacpan or search on metacpan
lib/Acme/IEnumerable.pm view on Meta::CPAN
307308309310311312313314315316317318319320321322323324325326327
my
$base
=
$self
->new;
my
%temp
;
while
(1) {
my
$item
=
$base
->();
last
unless
ref
$item
;
local
$_
=
$$item
;
my
$key
=
$key_extractor
->(
$_
);
push
@{
$temp
{
$key
} },
$_
;
}
my
@temp
=
map
{
Acme::IEnumerable::Grouping->from_list(
$_
, @{
$temp
{
$_
}})
}
keys
%temp
;
return
Acme::IEnumerable->from_list(
@temp
)->new;
};
}
sub
stack_by {
my
(
$self
,
$key_extractor
) =
@_
;
return
_create
sub
{
lib/Acme/IEnumerable.pm view on Meta::CPAN
334335336337338339340341342343344345346347348349350351352353354
local
$_
=
$$item
;
my
$key
=
$key_extractor
->(
$_
);
if
(not
@list
or
$key
ne
$list
[-1]->{key}) {
push
@list
, {
key
=>
$key
,
};
}
push
@{
$list
[-1]->{value} },
$_
;
}
my
@temp
=
map
{
Acme::IEnumerable::Grouping->from_list(
$_
->{key}, @{
$_
->{value} })
}
@list
;
return
Acme::IEnumerable->from_list(
@temp
)->new;
};
}
sub
skip {
my
(
$self
,
$count
) =
@_
;
return
_create
sub
{
( run in 0.293 second using v1.01-cache-2.11-cpan-bb97c1e446a )