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