The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package IO::Capture::Extended;
use strict;
use warnings;
our $VERSION = 0.13;
require Exporter;
our @ISA       = qw(Exporter);
our @EXPORT_OK = qw(
    grep_print_statements
    statements
    matches
    matches_ref
    all_screen_lines
); 
our %EXPORT_TAGS = ( all => [ @EXPORT_OK ] );


sub grep_print_statements {
    my $self = shift;
    my $string = shift;
    my @found_statements;
 
    for my $statement (@{$self->{'IO::Capture::messages'}}) {
        push @found_statements, $statement if $statement =~ /$string/;
    }
    return wantarray ? @found_statements : scalar(@found_statements);
}

sub statements {
    my $self = shift;
    return scalar(@{$self->{'IO::Capture::messages'}});
};

sub matches {
    my @matches = _matches_engine(@_);
    return wantarray ? @matches : scalar(@matches);
}

sub matches_ref {
    my @matches = _matches_engine(@_);
    return \@matches;
}

sub _matches_engine {
    my ($self, $regex) = @_;
    die "Not enough arguments: $!" 
        if (! defined $regex);
    my $str = join('', @{$self->{'IO::Capture::messages'}});
    my @matches = $str =~ m/$regex/g;
}

sub all_screen_lines {
    my $self = shift;
    my @screen_lines;
    @screen_lines = split(/\n/, join('', @{$self->{'IO::Capture::messages'}}));
    return wantarray ? @screen_lines : scalar(@screen_lines);
}

########## DOCUMENTATION ##########

=head1 NAME

IO::Capture::Extended - Extend functionality of IO::Capture

=head1 SYNOPSIS

All documentation is contained in IO::Capture::Extended::Overview.

    perldoc IO::Capture::Extended::Overview

=cut

1;