...
1 package resourcename
2
3
4 func Match(pattern, name string) bool {
5 var nameScanner, patternScanner Scanner
6 nameScanner.Init(name)
7 patternScanner.Init(pattern)
8 for patternScanner.Scan() {
9 if !nameScanner.Scan() {
10 return false
11 }
12 nameSegment := nameScanner.Segment()
13 if nameSegment.IsVariable() {
14 return false
15 }
16 patternSegment := patternScanner.Segment()
17 if patternSegment.IsWildcard() {
18 return false
19 }
20 if patternSegment.IsVariable() {
21 if nameSegment == "" {
22 return false
23 }
24 } else if nameSegment != patternSegment {
25 return false
26 }
27 }
28 switch {
29 case
30 nameScanner.Scan(),
31 patternScanner.Segment() == "",
32 patternScanner.Full():
33 return false
34 }
35 return true
36 }
37
View as plain text