MCPcopy Index your code
hub / github.com/cortexproject/cortex / findFlagsPrefix

Function findFlagsPrefix

tools/doc-generator/util.go:8–57  ·  view source on GitHub ↗
(flags []string)

Source from the content-addressed store, hash-verified

6)
7
8func findFlagsPrefix(flags []string) []string {
9 if len(flags) == 0 {
10 return flags
11 }
12
13 // Split the input flags input tokens separated by "."
14 // because the want to find the prefix where segments
15 // are dot-separated.
16 tokens := [][]string{}
17 for _, flag := range flags {
18 tokens = append(tokens, strings.Split(flag, "."))
19 }
20
21 // Find the shortest tokens.
22 minLength := math.MaxInt32
23 for _, t := range tokens {
24 if len(t) < minLength {
25 minLength = len(t)
26 }
27 }
28
29 // We iterate backward to find common suffixes. Each time
30 // a common suffix is found, we remove it from the tokens.
31outer:
32 for i := 0; i < minLength; i++ {
33 lastToken := tokens[0][len(tokens[0])-1]
34
35 // Interrupt if the last token is different across the flags.
36 for _, t := range tokens {
37 if t[len(t)-1] != lastToken {
38 break outer
39 }
40 }
41
42 // The suffix token is equal across all flags, so we
43 // remove it from all of them and re-iterate.
44 for i, t := range tokens {
45 tokens[i] = t[:len(t)-1]
46 }
47 }
48
49 // The remaining tokens are the different flags prefix, which we can
50 // now merge with the ".".
51 prefixes := []string{}
52 for _, t := range tokens {
53 prefixes = append(prefixes, strings.Join(t, "."))
54 }
55
56 return prefixes
57}

Callers 2

Test_findFlagsPrefixFunction · 0.85
annotateFlagPrefixFunction · 0.85

Calls 1

JoinMethod · 0.80

Tested by 1

Test_findFlagsPrefixFunction · 0.68