| Test-Harness documentation | Contained in the Test-Harness distribution. |
TAP::Parser::SourceHandler::RawTAP - Stream output from raw TAP in a scalar/array ref.
Version 3.23
use TAP::Parser::Source; use TAP::Parser::SourceHandler::RawTAP; my $source = TAP::Parser::Source->new->raw( \"1..1\nok 1\n" ); $source->assemble_meta; my $class = 'TAP::Parser::SourceHandler::RawTAP'; my $vote = $class->can_handle( $source ); my $iter = $class->make_iterator( $source );
This is a raw TAP output TAP::Parser::SourceHandler - it has 2 jobs:
1. Figure out if the TAP::Parser::Source it's given is raw TAP output (can_handle).
2. Creates an iterator for raw TAP output (make_iterator).
Unless you're writing a plugin or subclassing TAP::Parser, you probably won't need to use this module directly.
can_handlemy $vote = $class->can_handle( $source );
Only votes if $source is an array, or a scalar with newlines. Casts the following votes:
0.9 if it's a scalar with '..' in it 0.7 if it's a scalar with 'ok' in it 0.3 if it's just a scalar with newlines 0.5 if it's an array
make_iteratormy $iterator = $class->make_iterator( $source );
Returns a new TAP::Parser::Iterator::Array for the source.
$source->raw must be an array ref, or a scalar ref.
croaks on error.
Please see SUBCLASSING in TAP::Parser for a subclassing overview.
| Test-Harness documentation | Contained in the Test-Harness distribution. |
package TAP::Parser::SourceHandler::RawTAP; use strict; use vars qw($VERSION @ISA); use TAP::Parser::SourceHandler (); use TAP::Parser::IteratorFactory (); use TAP::Parser::Iterator::Array (); @ISA = qw(TAP::Parser::SourceHandler); TAP::Parser::IteratorFactory->register_handler(__PACKAGE__);
$VERSION = '3.23';
sub can_handle { my ( $class, $src ) = @_; my $meta = $src->meta; return 0 if $meta->{file}; if ( $meta->{is_scalar} ) { return 0 unless $meta->{has_newlines}; return 0.9 if ${ $src->raw } =~ /\d\.\.\d/; return 0.7 if ${ $src->raw } =~ /ok/; return 0.3; } elsif ( $meta->{is_array} ) { return 0.5; } return 0; }
sub make_iterator { my ( $class, $src ) = @_; my $meta = $src->meta; my $tap_array; if ( $meta->{is_scalar} ) { $tap_array = [ split "\n" => ${ $src->raw } ]; } elsif ( $meta->{is_array} ) { $tap_array = $src->raw; } $class->_croak('No raw TAP found in $source->raw') unless scalar $tap_array; return TAP::Parser::Iterator::Array->new($tap_array); } 1;