...

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

Documentation: github.com/gobwas/glob/match

     1  package match
     2  
     3  import (
     4  	"fmt"
     5  	"unicode/utf8"
     6  )
     7  
     8  type Min struct {
     9  	Limit int
    10  }
    11  
    12  func NewMin(l int) Min {
    13  	return Min{l}
    14  }
    15  
    16  func (self Min) Match(s string) bool {
    17  	var l int
    18  	for range s {
    19  		l += 1
    20  		if l >= self.Limit {
    21  			return true
    22  		}
    23  	}
    24  
    25  	return false
    26  }
    27  
    28  func (self Min) Index(s string) (int, []int) {
    29  	var count int
    30  
    31  	c := len(s) - self.Limit + 1
    32  	if c <= 0 {
    33  		return -1, nil
    34  	}
    35  
    36  	segments := acquireSegments(c)
    37  	for i, r := range s {
    38  		count++
    39  		if count >= self.Limit {
    40  			segments = append(segments, i+utf8.RuneLen(r))
    41  		}
    42  	}
    43  
    44  	if len(segments) == 0 {
    45  		return -1, nil
    46  	}
    47  
    48  	return 0, segments
    49  }
    50  
    51  func (self Min) Len() int {
    52  	return lenNo
    53  }
    54  
    55  func (self Min) String() string {
    56  	return fmt.Sprintf("<min:%d>", self.Limit)
    57  }
    58  

View as plain text