C++ comments, bad.
[p5sagit/p5-mst-13.2.git] / lib / Test / Harness / Iterator.pm
CommitLineData
13287dd5 1package Test::Harness::Iterator;
2
3use strict;
4use vars qw($VERSION);
5$VERSION = 0.01;
6
7
8=head1 NAME
9
10Test::Harness::Iterator - Internal Test::Harness Iterator
11
12=head1 SYNOPSIS
13
14 use Test::Harness::Iterator;
13287dd5 15 my $it = Test::Harness::Iterator->new(\*TEST);
16 my $it = Test::Harness::Iterator->new(\@array);
17
18 my $line = $it->next;
19
13287dd5 20=head1 DESCRIPTION
21
22B<FOR INTERNAL USE ONLY!>
23
24This is a simple iterator wrapper for arrays and filehandles.
25
26=cut
27
28sub new {
29 my($proto, $thing) = @_;
30
31 my $self = {};
32 if( ref $thing eq 'GLOB' ) {
33 bless $self, 'Test::Harness::Iterator::FH';
34 $self->{fh} = $thing;
35 }
36 elsif( ref $thing eq 'ARRAY' ) {
37 bless $self, 'Test::Harness::Iterator::ARRAY';
38 $self->{idx} = 0;
39 $self->{array} = $thing;
40 }
41 else {
42 warn "Can't iterate with a ", ref $thing;
43 }
44
45 return $self;
46}
47
48package Test::Harness::Iterator::FH;
49sub next {
50 my $fh = $_[0]->{fh};
51 return scalar <$fh>;
52}
53
54
55package Test::Harness::Iterator::ARRAY;
56sub next {
57 my $self = shift;
58 return $self->{array}->[$self->{idx}++];
59}