init: pristine aerc 0.20.0 source
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
package parse
|
||||
|
||||
import (
|
||||
"regexp"
|
||||
"sync"
|
||||
|
||||
"git.sr.ht/~rjarry/aerc/lib/log"
|
||||
)
|
||||
|
||||
var reCache sync.Map
|
||||
|
||||
// Check if a string matches the specified regular expression.
|
||||
// The regexp is compiled only once and stored in a cache for future use.
|
||||
func MatchCache(s, expr string) bool {
|
||||
var re interface{}
|
||||
var found bool
|
||||
|
||||
if re, found = reCache.Load(expr); !found {
|
||||
var err error
|
||||
re, err = regexp.Compile(expr)
|
||||
if err != nil {
|
||||
log.Errorf("`%s` invalid regexp: %s", expr, err)
|
||||
}
|
||||
reCache.Store(expr, re)
|
||||
}
|
||||
if re, ok := re.(*regexp.Regexp); ok && re != nil {
|
||||
return re.MatchString(s)
|
||||
}
|
||||
return false
|
||||
}
|
||||
Reference in New Issue
Block a user