Acme-IEnumerable
view release on metacpan or search on metacpan
lib/Acme/IEnumerable.pm view on Meta::CPAN
#
#####################################################################
package Acme::IEnumerable::List;
use base qw/Acme::IEnumerable/;
use strict;
use warnings;
use v5.10;
use Carp;
sub _create {
bless {
_list => $_[0],
_zero => 0,
_last => scalar(@{ $_[0] }) - 1,
_dir => 1,
_new => $_[1],
}, __PACKAGE__;
}
sub count {
my ($self) = @_;
lib/Acme/IEnumerable.pm view on Meta::CPAN
};
});
}
sub reverse {
my ($self) = @_;
return $self->to_list unless $self->count;
my $new;
$new = bless {
_list => $self->{_list},
_last => 0,
_zero => scalar(@{ $self->{_list} }) - 1,
_dir => -1,
_new => sub {
return sub {
state $index = 0;
return unless $index < $new->count;
return \($new->element_at($index++));
}
lib/Acme/IEnumerable.pm view on Meta::CPAN
#
#####################################################################
package Acme::IEnumerable::Ordered;
use strict;
use warnings;
use v5.10;
use Carp;
use base qw/Acme::IEnumerable/;
sub _create {
bless {
_key => $_[0],
_sgn => $_[1],
_par => $_[2],
_new => $_[3],
}, __PACKAGE__;
}
sub order_by {
# This assumes to_enumerable will remove the ::Ordered base type
my ($self) = @_;
lib/Acme/IEnumerable.pm view on Meta::CPAN
use warnings;
use v5.10;
use Carp;
use base qw/Acme::IEnumerable::List/;
sub from_list {
my $class = shift;
my $key = shift;
my $self = Acme::IEnumerable->from_list(@_);
$self->{key} = $key;
bless $self, __PACKAGE__;
}
sub key { $_[0]->{key} }
1;
#####################################################################
#
#####################################################################
package Acme::IEnumerable;
lib/Acme/IEnumerable.pm view on Meta::CPAN
do {
no warnings 'once';
*from_list = \&Acme::IEnumerable::List::from_list;
*to_array = \&Acme::IEnumerable::to_perl;
*order_by = \&Acme::IEnumerable::Ordered::then_by;
*order_by_descending =
\&Acme::IEnumerable::Ordered::then_by_descending;
};
sub _create {
bless {
_new => $_[0],
}, __PACKAGE__;
}
sub new { $_[0]->{_new}->() }
sub range {
my ($class, $from, $count) = @_;
if (defined $count) {
( run in 1.263 second using v1.01-cache-2.11-cpan-de7293f3b23 )