package Data::Enumerator::Limit;
use strict;
use warnings;
use base qw/Data::Enumerator::Base/;
sub iterator {
my ( $self ) = @_;
my ( $object, $offset, $limit ) = @{ $self->object };
my $object_iterator = $object->iterator;
my $current_offset = 0;
my $current_limit = 0;
return sub {
while (1) {
my $value = $object_iterator->();
next if ( $current_offset++ < $offset );
return $self->LAST if ( $current_limit++ >= $limit );
return $value;
}
};
}
1;