xref: /openbsd-src/gnu/usr.bin/perl/cpan/Test-Harness/t/lib/MySourceHandler.pm (revision 6fb12b7054efc6b436584db6cef9c2f85c0d7e27)
1898184e3Ssthen# subclass for testing customizing & subclassing
2898184e3Ssthen
3898184e3Ssthenpackage MySourceHandler;
4898184e3Ssthen
5898184e3Ssthenuse strict;
6*6fb12b70Safresh1use warnings;
7898184e3Ssthen
8898184e3Ssthenuse MyIterator;
9898184e3Ssthenuse TAP::Parser::SourceHandler;
10898184e3Ssthenuse TAP::Parser::IteratorFactory;
11898184e3Ssthen
12*6fb12b70Safresh1#use base qw( TAP::Parser::SourceHandler MyCustom );
13*6fb12b70Safresh1use base qw( MyCustom );
14898184e3Ssthen
15898184e3SsthenTAP::Parser::IteratorFactory->register_handler(__PACKAGE__);
16898184e3Ssthen
17898184e3Ssthensub can_handle {
18898184e3Ssthen    my ( $class, $source ) = @_;
19898184e3Ssthen    my $meta   = $source->meta;
20898184e3Ssthen    my $config = $source->config_for($class);
21898184e3Ssthen
22898184e3Ssthen    if ( $config->{accept_all} ) {
23898184e3Ssthen        return 1;
24898184e3Ssthen    }
25898184e3Ssthen    elsif ( my $accept = $config->{accept} ) {
26898184e3Ssthen        return 0 unless $meta->{is_scalar};
27898184e3Ssthen        return 1 if ${ $source->raw } eq $accept;
28898184e3Ssthen    }
29898184e3Ssthen    return 0;
30898184e3Ssthen}
31898184e3Ssthen
32898184e3Ssthensub make_iterator {
33898184e3Ssthen    my ( $class, $source ) = @_;
34898184e3Ssthen    $class->custom;
35898184e3Ssthen    return MyIterator->new( [ $source->raw ] );
36898184e3Ssthen}
37898184e3Ssthen
38898184e3Ssthen1;
39