blob: e6412c622ca371f8ea80bd58bda37cbe4745a111 [file] [log] [blame]
package TAP::Parser::Iterator::Array;
use strict;
use TAP::Parser::Iterator ();
use vars qw($VERSION @ISA);
@ISA = 'TAP::Parser::Iterator';
=head1 NAME
TAP::Parser::Iterator::Array - Internal TAP::Parser Iterator
=head1 VERSION
Version 3.10
=cut
$VERSION = '3.10';
=head1 SYNOPSIS
use TAP::Parser::Iterator::Array;
my $it = TAP::Parser::Iterator->new(\@array);
my $line = $it->next;
Originally ripped off from L<Test::Harness>.
=head1 DESCRIPTION
B<FOR INTERNAL USE ONLY!>
This is a simple iterator wrapper for arrays.
=head2 Class Methods
=head3 C<new>
Create an iterator.
=head2 Instance Methods
=head3 C<next>
Iterate through it, of course.
=head3 C<next_raw>
Iterate raw input without applying any fixes for quirky input syntax.
=head3 C<wait>
Get the wait status for this iterator. For an array iterator this will always
be zero.
=head3 C<exit>
Get the exit status for this iterator. For an array iterator this will always
be zero.
=cut
sub new {
my ( $class, $thing ) = @_;
chomp @$thing;
bless {
idx => 0,
array => $thing,
exit => undef,
}, $class;
}
sub wait { shift->exit }
sub exit {
my $self = shift;
return 0 if $self->{idx} >= @{ $self->{array} };
return;
}
sub next_raw {
my $self = shift;
return $self->{array}->[ $self->{idx}++ ];
}
1;