TAP::Parser::Iterator::Stream - Iterator for filehandle-based TAP sources


Test-Harness documentation Contained in the Test-Harness distribution.

Index


Code Index:

NAME

Top

TAP::Parser::Iterator::Stream - Iterator for filehandle-based TAP sources

VERSION

Top

Version 3.23

SYNOPSIS

Top

  use TAP::Parser::Iterator::Stream;
  open( TEST, 'test.tap' );
  my $it   = TAP::Parser::Iterator::Stream->new(\*TEST);
  my $line = $it->next;

DESCRIPTION

Top

This is a simple iterator wrapper for reading from filehandles, used by TAP::Parser. Unless you're writing a plugin or subclassing, you probably won't need to use this module directly.

METHODS

Top

Class Methods

new

Create an iterator. Expects one argument containing a filehandle.

Instance Methods

next

Iterate through it, of course.

next_raw

Iterate raw input without applying any fixes for quirky input syntax.

wait

Get the wait status for this iterator. Always returns zero.

exit

Get the exit status for this iterator. Always returns zero.

ATTRIBUTION

Top

Originally ripped off from Test::Harness.

SEE ALSO

Top

TAP::Object, TAP::Parser, TAP::Parser::Iterator,


Test-Harness documentation Contained in the Test-Harness distribution.
package TAP::Parser::Iterator::Stream;

use strict;
use vars qw($VERSION @ISA);

use TAP::Parser::Iterator ();

@ISA = 'TAP::Parser::Iterator';

$VERSION = '3.23';

# new() implementation supplied by TAP::Object

sub _initialize {
    my ( $self, $thing ) = @_;
    $self->{fh} = $thing;
    return $self;
}

sub wait { shift->exit }
sub exit { shift->{fh} ? () : 0 }

sub next_raw {
    my $self = shift;
    my $fh   = $self->{fh};

    if ( defined( my $line = <$fh> ) ) {
        chomp $line;
        return $line;
    }
    else {
        $self->_finish;
        return;
    }
}

sub _finish {
    my $self = shift;
    close delete $self->{fh};
}

1;