Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

131 lines (81 sloc) 2.285 kb
package App::Ack::Filter;
use strict;
use warnings;
use App::Ack::Filter::Inverse ();
use Carp 1.04 ();
my %filter_types;
=head1 NAME
App::Ack::Filter - Filter objects to filter files
# filter implementation
package MyFilter;
use strict;
use warnings;
use base 'App::Ack::Filter';
sub filter {
my ( $self, $resource ) = @_;
App::Ack::Filter->register_filter('mine' => __PACKAGE__);
# users
App::Ack::Filter->create_filter('mine', @args);
App::Ack::Filter implementations are responsible for filtering filenames
to be searched.
=head1 METHODS
=head2 App::Ack:Filter->create_filter($type, @args)
Creates a filter implementation, registered as C<$type>. C<@args>
are provided as additional arguments to the implementation's constructor.
sub create_filter {
my ( undef, $type, @args ) = @_;
if ( my $package = $filter_types{$type} ) {
return $package->new(@args);
Carp::croak "Unknown filter type '$type'";
=head2 App::Ack:Filter->register_filter($type, $package)
Registers a filter implementation package C<$package> under
the name C<$type>.
sub register_filter {
my ( undef, $type, $package ) = @_;
$filter_types{$type} = $package;
=head2 $filter->filter($resource)
Must be implemented by filter implementations. Returns
true if the filter passes, false otherwise. This method
must B<not> alter the passed-in C<$resource> object.
=head2 $filter->invert()
Returns a filter whose L</filter> method returns the opposite of this filter.
sub invert {
my ( $self ) = @_;
return App::Ack::Filter::Inverse->new( $self );
=head2 $filter->is_inverted()
Returns true if this filter is an inverted filter; false otherwise.
sub is_inverted {
return 0;
=head2 $filter->to_string
Converts the filter to a string. This method is also
called implicitly by stringification.
sub to_string {
my ( $self ) = @_;
return '(unimplemented to_string)';
=head2 $filter->inspect
Prints a human-readable debugging string for this filter. Useful for,
you guessed it, debugging.
sub inspect {
my ( $self ) = @_;
return ref($self);
Jump to Line
Something went wrong with that request. Please try again.