forked from handyachievem/hypermatch
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpattern_validate.go
39 lines (33 loc) · 875 Bytes
/
pattern_validate.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package hypermatch
import (
"fmt"
)
func validateCondition(cond *Condition) error {
if cond == nil || len(cond.Path) == 0 {
return nil
}
return validatePattern(cond.Path, &cond.Pattern)
}
func validatePattern(path string, pattern *Pattern) error {
if pattern == nil || len(path) == 0 {
return nil
}
switch pattern.Type {
case PatternEquals:
return validatePatternEquals(pattern)
case PatternPrefix:
return validatePatternWildcard(pattern)
case PatternSuffix:
return validatePatternWildcard(pattern)
case PatternWildcard:
return validatePatternWildcard(pattern)
case PatternAnythingBut:
return validatePatternAnythingBut(path, pattern)
case PatternAnyOf:
return validatePatternAnyOf(path, pattern)
case PatternAllOf:
return validatePatternAllOf(path, pattern)
default:
return fmt.Errorf("unknown pattern type '%d'", pattern.Type)
}
}