package App::Ack::Filter::MatchGroup; =head1 NAME App::Ack::Filter::MatchGroup =head1 DESCRIPTION The App::Ack::Filter::MatchGroup class optimizes multiple ::Match calls into one container. See App::Ack::Filter::IsGroup for details. =cut use strict; use warnings; use parent 'App::Ack::Filter'; sub new { my ( $class ) = @_; return bless { matches => [], big_re => undef, }, $class; } sub add { my ( $self, $filter ) = @_; push @{ $self->{matches} }, $filter->{regex}; my $re = join('|', map { "(?:$_)" } @{ $self->{matches} }); $self->{big_re} = qr/$re/; return; } sub filter { my ( $self, $file ) = @_; return $file->basename =~ /$self->{big_re}/; } # This class has no inspect() or to_string() method. # It will just use the default one unless someone writes something useful. 1;