MCPcopy Create free account
hub / github.com/netdata/netdata / parseSelector

Function parseSelector

src/go/pkg/selectorcore/parse.go:43–73  ·  view source on GitHub ↗
(line string)

Source from the content-addressed store, hash-verified

41}
42
43func parseSelector(line string) (Selector, error) {
44 sub := reLV.FindStringSubmatch(strings.TrimSpace(line))
45 if sub == nil {
46 return nil, fmt.Errorf("invalid selector syntax: '%s'", line)
47 }
48
49 name, op, pattern := sub[1], sub[2], strings.Trim(sub[3], "\"")
50
51 var m matcher.Matcher
52 var err error
53
54 switch op {
55 case OpEqual, OpNegEqual:
56 m, err = matcher.NewStringMatcher(pattern, true, true)
57 case OpRegexp, OpNegRegexp:
58 m, err = matcher.NewRegExpMatcher(pattern)
59 case OpSimplePatterns, OpNegSimplePatterns:
60 m, err = matcher.NewSimplePatternsMatcher(pattern)
61 default:
62 err = fmt.Errorf("unknown matching operator: %s", op)
63 }
64 if err != nil {
65 return nil, err
66 }
67
68 sr := labelSelector{name: name, m: m}
69 if strings.HasPrefix(op, "!") {
70 return Not(sr), nil
71 }
72 return sr, nil
73}
74
75func unsugarExpr(expr string) string {
76 // name => __name__=*"name"

Callers 2

ParseFunction · 0.70
ParseCompiledFunction · 0.70

Calls 2

NotFunction · 0.70
ErrorfMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…