• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

geniusrabbit / eventstream / 10761432930

08 Sep 2024 04:24PM UTC coverage: 33.812% (-0.001%) from 33.813%
10761432930

push

github

demdxx
Fix prepare keys for patternkeys

1 of 3 new or added lines in 1 file covered. (33.33%)

777 of 2298 relevant lines covered (33.81%)

0.39 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

93.1
/internal/patternkey/patternkeys_values.go
1
package patternkey
2

3
import (
4
        "regexp"
5
        "strings"
6

7
        "github.com/geniusrabbit/eventstream/internal/message"
8
)
9

10
var metricNames = regexp.MustCompile(`\{\{([^\}]*)\}\}`)
11

12
// PatternKey contains single j=key/value template
13
type PatternKey struct {
14
        value string
15
        vars  []string
16
}
17

18
// PatternKeyFromTemplate returns key with variables
19
func PatternKeyFromTemplate(template string) *PatternKey {
1✔
20
        subNames := metricNames.FindAllStringSubmatch(template, -1)
1✔
21
        names := make([]string, 0, len(subNames))
1✔
22
        for _, name := range subNames {
2✔
23
                names = append(names, name[1])
1✔
24
        }
1✔
25
        return &PatternKey{value: template, vars: names}
1✔
26
}
27

28
// Prepare values by message
29
func (key *PatternKey) Prepare(msg message.Message) string {
1✔
30
        val := key.value
1✔
31
        for _, vr := range key.vars {
2✔
32
                val = strings.ReplaceAll(val, "{{"+vr+"}}", msg.Str(vr, ""))
1✔
33
        }
1✔
34
        return val
1✔
35
}
36

37
// PatterKeys data processing
38
type PatterKeys struct {
39
        keys []*PatternKey
40
}
41

42
// PatternKeysFrom returns list of pattern keys
43
func PatternKeysFrom(values ...string) *PatterKeys {
1✔
44
        vals := &PatterKeys{keys: make([]*PatternKey, 0, len(values))}
1✔
45
        for _, val := range values {
2✔
46
                valTmp := PatternKeyFromTemplate(val)
1✔
47
                vals.keys = append(vals.keys, valTmp)
1✔
48
        }
1✔
49
        return vals
1✔
50
}
51

52
// Prepare values by message
53
func (tags *PatterKeys) Prepare(msg message.Message) []string {
1✔
54
        if tags == nil || len(tags.keys) == 0 {
1✔
NEW
55
                return nil
×
NEW
56
        }
×
57
        vals := make([]string, 0, len(tags.keys))
1✔
58
        for _, tag := range tags.keys {
2✔
59
                vals = append(vals, tag.Prepare(msg))
1✔
60
        }
1✔
61
        return vals
1✔
62
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc