|
@@ -4,14 +4,14 @@
|
4
|
4
|
package utils
|
5
|
5
|
|
6
|
6
|
import (
|
7
|
|
- "bytes"
|
8
|
7
|
"regexp"
|
9
|
8
|
"regexp/syntax"
|
|
9
|
+ "strings"
|
10
|
10
|
)
|
11
|
11
|
|
12
|
12
|
// yet another glob implementation in Go
|
13
|
13
|
|
14
|
|
-func addRegexp(buf *bytes.Buffer, glob string, submatch bool) (err error) {
|
|
14
|
+func addRegexp(buf *strings.Builder, glob string, submatch bool) (err error) {
|
15
|
15
|
for _, r := range glob {
|
16
|
16
|
switch r {
|
17
|
17
|
case '*':
|
|
@@ -36,7 +36,7 @@ func addRegexp(buf *bytes.Buffer, glob string, submatch bool) (err error) {
|
36
|
36
|
}
|
37
|
37
|
|
38
|
38
|
func CompileGlob(glob string, submatch bool) (result *regexp.Regexp, err error) {
|
39
|
|
- var buf bytes.Buffer
|
|
39
|
+ var buf strings.Builder
|
40
|
40
|
buf.WriteByte('^')
|
41
|
41
|
err = addRegexp(&buf, glob, submatch)
|
42
|
42
|
if err != nil {
|
|
@@ -50,7 +50,7 @@ func CompileGlob(glob string, submatch bool) (result *regexp.Regexp, err error)
|
50
|
50
|
// This is used for channel ban/invite/exception lists. It's applicable to k-lines
|
51
|
51
|
// but we're not using it there yet.
|
52
|
52
|
func CompileMasks(masks []string) (result *regexp.Regexp, err error) {
|
53
|
|
- var buf bytes.Buffer
|
|
53
|
+ var buf strings.Builder
|
54
|
54
|
buf.WriteString("^(")
|
55
|
55
|
for i, mask := range masks {
|
56
|
56
|
err = addRegexp(&buf, mask, false)
|