...

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

Documentation: github.com/gobwas/glob/match

     1  package match
     2  
     3  import (
     4  	"fmt"
     5  	"strings"
     6  	"unicode/utf8"
     7  )
     8  
     9  type Prefix struct {
    10  	Prefix string
    11  }
    12  
    13  func NewPrefix(p string) Prefix {
    14  	return Prefix{p}
    15  }
    16  
    17  func (self Prefix) Index(s string) (int, []int) {
    18  	idx := strings.Index(s, self.Prefix)
    19  	if idx == -1 {
    20  		return -1, nil
    21  	}
    22  
    23  	length := len(self.Prefix)
    24  	var sub string
    25  	if len(s) > idx+length {
    26  		sub = s[idx+length:]
    27  	} else {
    28  		sub = ""
    29  	}
    30  
    31  	segments := acquireSegments(len(sub) + 1)
    32  	segments = append(segments, length)
    33  	for i, r := range sub {
    34  		segments = append(segments, length+i+utf8.RuneLen(r))
    35  	}
    36  
    37  	return idx, segments
    38  }
    39  
    40  func (self Prefix) Len() int {
    41  	return lenNo
    42  }
    43  
    44  func (self Prefix) Match(s string) bool {
    45  	return strings.HasPrefix(s, self.Prefix)
    46  }
    47  
    48  func (self Prefix) String() string {
    49  	return fmt.Sprintf("<prefix:%s>", self.Prefix)
    50  }
    51  

View as plain text