GoDoxy/internal/utils/strutils/glob.go

28 lines
445 B
Go

package strutils
import (
"sync"
"github.com/gobwas/glob"
)
var (
globPatterns = make(map[string]glob.Glob)
globPatternsMu sync.Mutex
)
func GlobMatch(pattern string, s string) bool {
if glob, ok := globPatterns[pattern]; ok {
return glob.Match(s)
}
globPatternsMu.Lock()
defer globPatternsMu.Unlock()
glob, err := glob.Compile(pattern)
if err != nil {
return false
}
globPatterns[pattern] = glob
return glob.Match(s)
}