package Data::Enumerator::Repeat;
use strict;
use warnings;
use base qw/Data::Enumerator::Base/;
sub iterator {
my ($self) = @_;
my $object_iterator = $self->object->iterator;
my $repeated_iterator;
$repeated_iterator = sub {
my $value = $object_iterator->();
if ( $self->is_last($value) ) {
$object_iterator = $self->object->iterator;
return $repeated_iterator->();
}
return $value;
};
return $repeated_iterator;
}
1;