Skip to content

Commit

Permalink
Preserve regex flags
Browse files Browse the repository at this point in the history
Flags were being lost during reflagging.  This fixes that bug.

Closes #19
  • Loading branch information
xdg committed Sep 21, 2015
1 parent f3a81a8 commit 67fe07b
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 0 deletions.
5 changes: 5 additions & 0 deletions Changes
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@ Revision history for Path-Iterator-Rule

{{$NEXT}}

[FIXED]

- Regular expressions flags were being lost. Now name(qr/foo/i) works
like iname(qr/foo/)

1.008 2014-02-04 17:40:45-05:00 America/New_York

[ADDED]
Expand Down
1 change: 1 addition & 0 deletions lib/Path/Iterator/Rule.pm
Original file line number Diff line number Diff line change
Expand Up @@ -432,6 +432,7 @@ sub _regexify {
my ( $re, $add ) = @_;
$add ||= '';

This comment has been minimized.

Copy link
@hermidalc

hermidalc Sep 22, 2015

Line 433 is not necessary since your return $new if $add is false and setting $new doesn't use $add.

my $new = ref($re) eq 'Regexp' ? $re : Text::Glob::glob_to_regex($re);
return $new unless $add;
my ( $pattern, $flags ) = regexp_pattern($new);
my $new_flags = $add ? _reflag( $flags, $add ) : "";

This comment has been minimized.

Copy link
@hermidalc

hermidalc Sep 22, 2015

Change line 437 to:

my $new_flags = _reflag( $flags, $add );

since you know you have $add at this point.

return qr/$new_flags$pattern/;
Expand Down
39 changes: 39 additions & 0 deletions t/names.t
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,32 @@ my $td = make_tree(@tree);
or diag explain { got => \@files, expected => $expected };
}

{
my $rule = Path::Iterator::Rule->new->name(qr/foo/i);
my $expected = [
qw(
lib/Foo.pm
lib/Foo.pod
)
];
my @files = map { unixify( $_, $td ) } $rule->all($td);
cmp_deeply( \@files, $expected, "name(qr/Foo/) match" )
or diag explain { got => \@files, expected => $expected };
}

{
my $rule = Path::Iterator::Rule->new->name(qr/ foo /ix);
my $expected = [
qw(
lib/Foo.pm
lib/Foo.pod
)
];
my @files = map { unixify( $_, $td ) } $rule->all($td);
cmp_deeply( \@files, $expected, "name(qr/Foo/) match" )
or diag explain { got => \@files, expected => $expected };
}

{
my $rule = Path::Iterator::Rule->new->name( "*.pod", "*.pm" );
my $expected = [
Expand All @@ -80,6 +106,19 @@ my $td = make_tree(@tree);
or diag explain { got => \@files, expected => $expected };
}

{
my $rule = Path::Iterator::Rule->new->iname(qr/ foo /x);
my $expected = [
qw(
lib/Foo.pm
lib/Foo.pod
)
];
my @files = map { unixify( $_, $td ) } $rule->all($td);
cmp_deeply( \@files, $expected, "iname(qr/foo/) match" )
or diag explain { got => \@files, expected => $expected };
}

{
my $rule = Path::Iterator::Rule->new->iname('foo.*');
my $expected = [
Expand Down

0 comments on commit 67fe07b

Please sign in to comment.