diff options
author | Michael G. Schwern <schwern@pobox.com> | 2012-07-26 17:26:06 -0700 |
---|---|---|
committer | Eric Wong <normalperson@yhbt.net> | 2012-07-27 22:36:19 +0000 |
commit | 3d9be15fc2b8c8198253ae1c4dcaa343b74c3b8d (patch) | |
tree | 6f8732038831d7c3dacc0efe4ea837cfc53a34e8 /git-svn.perl | |
parent | 10c2aa5928b5309374bb4328f1c2849cb4ae65cc (diff) | |
download | git-3d9be15fc2b8c8198253ae1c4dcaa343b74c3b8d.tar.gz |
Extract Git::SVN::GlobSpec from git-svn.
Straight cut & paste. That's the last class.
* Make Git::SVN load it on its own, its the only thing that needs it.
Signed-off-by: Eric Wong <normalperson@yhbt.net>
Diffstat (limited to 'git-svn.perl')
-rwxr-xr-x | git-svn.perl | 59 |
1 files changed, 0 insertions, 59 deletions
diff --git a/git-svn.perl b/git-svn.perl index ca0b6f2987..5711c5719f 100755 --- a/git-svn.perl +++ b/git-svn.perl @@ -2039,65 +2039,6 @@ sub gc_directory { } } - -package Git::SVN::GlobSpec; -use strict; -use warnings; - -sub new { - my ($class, $glob, $pattern_ok) = @_; - my $re = $glob; - $re =~ s!/+$!!g; # no need for trailing slashes - my (@left, @right, @patterns); - my $state = "left"; - my $die_msg = "Only one set of wildcard directories " . - "(e.g. '*' or '*/*/*') is supported: '$glob'\n"; - for my $part (split(m|/|, $glob)) { - if ($part =~ /\*/ && $part ne "*") { - die "Invalid pattern in '$glob': $part\n"; - } elsif ($pattern_ok && $part =~ /[{}]/ && - $part !~ /^\{[^{}]+\}/) { - die "Invalid pattern in '$glob': $part\n"; - } - if ($part eq "*") { - die $die_msg if $state eq "right"; - $state = "pattern"; - push(@patterns, "[^/]*"); - } elsif ($pattern_ok && $part =~ /^\{(.*)\}$/) { - die $die_msg if $state eq "right"; - $state = "pattern"; - my $p = quotemeta($1); - $p =~ s/\\,/|/g; - push(@patterns, "(?:$p)"); - } else { - if ($state eq "left") { - push(@left, $part); - } else { - push(@right, $part); - $state = "right"; - } - } - } - my $depth = @patterns; - if ($depth == 0) { - die "One '*' is needed in glob: '$glob'\n"; - } - my $left = join('/', @left); - my $right = join('/', @right); - $re = join('/', @patterns); - $re = join('\/', - grep(length, quotemeta($left), "($re)", quotemeta($right))); - my $left_re = qr/^\/\Q$left\E(\/|$)/; - bless { left => $left, right => $right, left_regex => $left_re, - regex => qr/$re/, glob => $glob, depth => $depth }, $class; -} - -sub full_path { - my ($self, $path) = @_; - return (length $self->{left} ? "$self->{left}/" : '') . - $path . (length $self->{right} ? "/$self->{right}" : ''); -} - __END__ Data structures: |