Skip to content

Commit 673f4fb

Browse files
authored
fix: removed unnecessary forward capture group (#20)
* fix: removed unnecessary forward capture group change ReplaceAll to ReplaceAllString for brevity * fix: update FindTokens tests
1 parent 21a5f57 commit 673f4fb

File tree

3 files changed

+67
-3
lines changed

3 files changed

+67
-3
lines changed

configmanager.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ func retrieveWithInputReplaced(input string, gv GenerateAPI) (string, error) {
5656
func FindTokens(input string) []string {
5757
tokens := []string{}
5858
for k := range generator.VarPrefix {
59-
matches := regexp.MustCompile(`(?s)`+regexp.QuoteMeta(string(k))+`.(`+TERMINATING_CHAR+`+)`).FindAllString(input, -1)
59+
matches := regexp.MustCompile(regexp.QuoteMeta(string(k))+`.(`+TERMINATING_CHAR+`+)`).FindAllString(input, -1)
6060
tokens = append(tokens, matches...)
6161
}
6262
return tokens

configmanager_test.go

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"fmt"
55
"io"
66
"reflect"
7+
"sort"
78
"testing"
89

910
"github.com/dnitsch/configmanager/internal/testutils"
@@ -519,3 +520,66 @@ func Test_RetrieveMarshalledJson(t *testing.T) {
519520
})
520521
}
521522
}
523+
524+
func TestFindTokens(t *testing.T) {
525+
ttests := map[string]struct {
526+
input string
527+
expect []string
528+
}{
529+
"extract from text correctly": {
530+
`Where does it come from?
531+
Contrary to popular belief,
532+
Lorem Ipsum is AWSPARAMSTR:///djsfsdkjvfjkhfdvibdfinjdsfnjvdsflj <= in middle of sentencenot simply random text.
533+
It has roots in a piece of classical Latin literature from 45
534+
BC, making it over 2000 years old. Richard McClintock, a Latin professor at
535+
Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, c
536+
onsectetur, from a Lorem Ipsum passage , at the end of line => AWSPARAMSTR:///djsfsdkjvfjkhfdvibdfinjdsfnjvdsflj
537+
and going through the cites of the word in c
538+
lassical literature, discovered the undoubtable source. Lorem Ipsum comes from secti
539+
ons in singles =>'AWSPARAMSTR:///djsfsdkjvfjkhfdvibdfinjdsfnjvdsflj'1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil)
540+
in doubles => "AWSPARAMSTR:///djsfsdkjvfjkhfdvibdfinjdsfnjvdsflj"
541+
by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular
542+
during the :=> embedded in text RenaissanceAWSPARAMSTR:///djsfsdkjvfjkhfdvibdfinjdsfnjvdsflj[] embedded in text <=:
543+
The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32.`,
544+
[]string{
545+
"AWSPARAMSTR:///djsfsdkjvfjkhfdvibdfinjdsfnjvdsflj",
546+
"AWSPARAMSTR:///djsfsdkjvfjkhfdvibdfinjdsfnjvdsflj",
547+
"AWSPARAMSTR:///djsfsdkjvfjkhfdvibdfinjdsfnjvdsflj",
548+
"AWSPARAMSTR:///djsfsdkjvfjkhfdvibdfinjdsfnjvdsflj",
549+
"AWSPARAMSTR:///djsfsdkjvfjkhfdvibdfinjdsfnjvdsflj[]"},
550+
},
551+
"unknown implementation not picked up": {
552+
`foo: AWSPARAMSTR:///djsfsdkjvfjkhfdvibdfinjdsfnjvdsflj
553+
bar: AWSPARAMSTR#bar/djsfsdkjvfjkhfdvibdfinjdsfnjvdsflj[version:123]
554+
unknown: GCPPARAMSTR:///djsfsdkjvfjkhfdvibdfinjdsfnjvdsflj`,
555+
[]string{
556+
"AWSPARAMSTR:///djsfsdkjvfjkhfdvibdfinjdsfnjvdsflj",
557+
"AWSPARAMSTR#bar/djsfsdkjvfjkhfdvibdfinjdsfnjvdsflj[version:123]"},
558+
},
559+
"all implementations": {
560+
`param: AWSPARAMSTR:///djsfsdkjvfjkhfdvibdfinjdsfnjvdsflj
561+
secretsmgr: AWSSECRETS#bar/djsfsdkjvfjkhfdvibdfinjdsfnjvdsflj[version:123]
562+
gcp: GCPSECRETS:///djsfsdkjvfjkhfdvibdfinjdsfnjvdsflj
563+
vault: VAULT:///djsfsdkjvfjkhfdvibdfinjdsfnjvdsflj[]
564+
som othere strufsd
565+
azkv: AZKVSECRET:///djsfsdkjvfjkhfdvibdfinjdsfnjvdsflj`,
566+
[]string{
567+
"GCPSECRETS:///djsfsdkjvfjkhfdvibdfinjdsfnjvdsflj",
568+
"AWSPARAMSTR:///djsfsdkjvfjkhfdvibdfinjdsfnjvdsflj",
569+
"AWSSECRETS#bar/djsfsdkjvfjkhfdvibdfinjdsfnjvdsflj[version:123]",
570+
"AZKVSECRET:///djsfsdkjvfjkhfdvibdfinjdsfnjvdsflj",
571+
"VAULT:///djsfsdkjvfjkhfdvibdfinjdsfnjvdsflj[]"},
572+
},
573+
}
574+
for name, tt := range ttests {
575+
t.Run(name, func(t *testing.T) {
576+
got := FindTokens(tt.input)
577+
sort.Strings(got)
578+
sort.Strings(tt.expect)
579+
580+
if !reflect.DeepEqual(got, tt.expect) {
581+
t.Errorf("input=(%q)\n\ngot: %v\n\nwant: %v", tt.input, got, tt.expect)
582+
}
583+
})
584+
}
585+
}

pkg/generator/strategy.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,6 @@ func (rs *retrieveStrategy) stripPrefix(in string, prefix ImplementationPrefix)
7979
// stripPrefix
8080
func stripPrefix(in string, prefix ImplementationPrefix, tokenSeparator, keySeparator string) string {
8181
t := in
82-
b := regexp.MustCompile(fmt.Sprintf(`[%s].*`, keySeparator)).ReplaceAll([]byte(t), []byte(""))
83-
return strings.Replace(string(b), fmt.Sprintf("%s%s", prefix, tokenSeparator), "", 1)
82+
b := regexp.MustCompile(fmt.Sprintf(`[%s].*`, keySeparator)).ReplaceAllString(t, "")
83+
return strings.Replace(b, fmt.Sprintf("%s%s", prefix, tokenSeparator), "", 1)
8484
}

0 commit comments

Comments
 (0)