@@ -2039,65 +2039,6 @@ sub gc_directory {
20392039 }
20402040}
20412041
2042-
2043- package Git::SVN::GlobSpec ;
2044- use strict;
2045- use warnings;
2046-
2047- sub new {
2048- my ($class , $glob , $pattern_ok ) = @_ ;
2049- my $re = $glob ;
2050- $re =~ s ! /+$!! g ; # no need for trailing slashes
2051- my (@left , @right , @patterns );
2052- my $state = " left" ;
2053- my $die_msg = " Only one set of wildcard directories " .
2054- " (e.g. '*' or '*/*/*') is supported: '$glob '\n " ;
2055- for my $part (split (m | /| , $glob )) {
2056- if ($part =~ / \* / && $part ne " *" ) {
2057- die " Invalid pattern in '$glob ': $part \n " ;
2058- } elsif ($pattern_ok && $part =~ / [{}]/ &&
2059- $part !~ / ^\{ [^{}]+\} / ) {
2060- die " Invalid pattern in '$glob ': $part \n " ;
2061- }
2062- if ($part eq " *" ) {
2063- die $die_msg if $state eq " right" ;
2064- $state = " pattern" ;
2065- push (@patterns , " [^/]*" );
2066- } elsif ($pattern_ok && $part =~ / ^\{ (.*)\} $ / ) {
2067- die $die_msg if $state eq " right" ;
2068- $state = " pattern" ;
2069- my $p = quotemeta ($1 );
2070- $p =~ s /\\ ,/ |/ g ;
2071- push (@patterns , " (?:$p )" );
2072- } else {
2073- if ($state eq " left" ) {
2074- push (@left , $part );
2075- } else {
2076- push (@right , $part );
2077- $state = " right" ;
2078- }
2079- }
2080- }
2081- my $depth = @patterns ;
2082- if ($depth == 0) {
2083- die " One '*' is needed in glob: '$glob '\n " ;
2084- }
2085- my $left = join (' /' , @left );
2086- my $right = join (' /' , @right );
2087- $re = join (' /' , @patterns );
2088- $re = join (' \/' ,
2089- grep (length , quotemeta ($left ), " ($re )" , quotemeta ($right )));
2090- my $left_re = qr / ^\/\Q $left \E (\/ |$ )/ ;
2091- bless { left => $left , right => $right , left_regex => $left_re ,
2092- regex => qr /$re / , glob => $glob , depth => $depth }, $class ;
2093- }
2094-
2095- sub full_path {
2096- my ($self , $path ) = @_ ;
2097- return (length $self -> {left } ? " $self ->{left}/" : ' ' ) .
2098- $path . (length $self -> {right } ? " /$self ->{right}" : ' ' );
2099- }
2100-
21012042__END__
21022043
21032044Data structures:
0 commit comments