package Analizo::FilenameFilter;
use strict;
use warnings;

sub new {
  my ($package, @options) = @_;
  my $self = {
    regex => '.',
    reverse =>  0,
    @options
  };
  return bless $self, __PACKAGE__;
}

sub exclude {
  my ($package, @paths) = @_;
  my $regex = sprintf("^(./)?(%s)", join('|', @paths));
  return $package->new(regex => $regex, reverse => 1);
}

sub matches {
  my ($self, $filename) = @_;
  my $match = ($filename =~ /$self->{regex}/);
  return $self->{reverse} ? !$match : $match;
}

1;