mirror of
				https://github.com/go-gitea/gitea
				synced 2025-11-03 21:08:25 +00:00 
			
		
		
		
	* Fix validate() function to handle errors in embedded anon structs * Implement webhook branch filter See #2025, #3998.
		
			
				
	
	
		
			59 lines
		
	
	
		
			943 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			943 B
		
	
	
	
		
			Go
		
	
	
	
	
	
package match
 | 
						|
 | 
						|
import (
 | 
						|
	"fmt"
 | 
						|
	"strings"
 | 
						|
)
 | 
						|
 | 
						|
type Contains struct {
 | 
						|
	Needle string
 | 
						|
	Not    bool
 | 
						|
}
 | 
						|
 | 
						|
func NewContains(needle string, not bool) Contains {
 | 
						|
	return Contains{needle, not}
 | 
						|
}
 | 
						|
 | 
						|
func (self Contains) Match(s string) bool {
 | 
						|
	return strings.Contains(s, self.Needle) != self.Not
 | 
						|
}
 | 
						|
 | 
						|
func (self Contains) Index(s string) (int, []int) {
 | 
						|
	var offset int
 | 
						|
 | 
						|
	idx := strings.Index(s, self.Needle)
 | 
						|
 | 
						|
	if !self.Not {
 | 
						|
		if idx == -1 {
 | 
						|
			return -1, nil
 | 
						|
		}
 | 
						|
 | 
						|
		offset = idx + len(self.Needle)
 | 
						|
		if len(s) <= offset {
 | 
						|
			return 0, []int{offset}
 | 
						|
		}
 | 
						|
		s = s[offset:]
 | 
						|
	} else if idx != -1 {
 | 
						|
		s = s[:idx]
 | 
						|
	}
 | 
						|
 | 
						|
	segments := acquireSegments(len(s) + 1)
 | 
						|
	for i := range s {
 | 
						|
		segments = append(segments, offset+i)
 | 
						|
	}
 | 
						|
 | 
						|
	return 0, append(segments, offset+len(s))
 | 
						|
}
 | 
						|
 | 
						|
func (self Contains) Len() int {
 | 
						|
	return lenNo
 | 
						|
}
 | 
						|
 | 
						|
func (self Contains) String() string {
 | 
						|
	var not string
 | 
						|
	if self.Not {
 | 
						|
		not = "!"
 | 
						|
	}
 | 
						|
	return fmt.Sprintf("<contains:%s[%s]>", not, self.Needle)
 | 
						|
}
 |