...

Source file src/github.com/gobwas/glob/match/suffix_any.go

Documentation: github.com/gobwas/glob/match

     1  package match
     2  
     3  import (
     4  	"fmt"
     5  	"strings"
     6  
     7  	sutil "github.com/gobwas/glob/util/strings"
     8  )
     9  
    10  type SuffixAny struct {
    11  	Suffix     string
    12  	Separators []rune
    13  }
    14  
    15  func NewSuffixAny(s string, sep []rune) SuffixAny {
    16  	return SuffixAny{s, sep}
    17  }
    18  
    19  func (self SuffixAny) Index(s string) (int, []int) {
    20  	idx := strings.Index(s, self.Suffix)
    21  	if idx == -1 {
    22  		return -1, nil
    23  	}
    24  
    25  	i := sutil.LastIndexAnyRunes(s[:idx], self.Separators) + 1
    26  
    27  	return i, []int{idx + len(self.Suffix) - i}
    28  }
    29  
    30  func (self SuffixAny) Len() int {
    31  	return lenNo
    32  }
    33  
    34  func (self SuffixAny) Match(s string) bool {
    35  	if !strings.HasSuffix(s, self.Suffix) {
    36  		return false
    37  	}
    38  	return sutil.IndexAnyRunes(s[:len(s)-len(self.Suffix)], self.Separators) == -1
    39  }
    40  
    41  func (self SuffixAny) String() string {
    42  	return fmt.Sprintf("<suffix_any:![%s]%s>", string(self.Separators), self.Suffix)
    43  }
    44  

View as plain text