Skip to content

Commit

Permalink
Make seperator configurable
Browse files Browse the repository at this point in the history
Signed-off-by: Rick Brouwer <rickbrouwer@gmail.com>
  • Loading branch information
rickbrouwer committed Sep 4, 2024
1 parent c8d137f commit 6ce36ca
Showing 1 changed file with 29 additions and 13 deletions.
42 changes: 29 additions & 13 deletions pkg/scalers/scalersconfig/typed_config.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ const (

// separators for map and slice elements
const (
elemSeparator = ",;"
elemSeparator = ","
elemKeyValSeparator = "="
)

Expand All @@ -76,6 +76,7 @@ const (
enumTag = "enum"
exclusiveSetTag = "exclusiveSet"
rangeTag = "range"
seperatorTag = "separator"
)

// Params is a struct that represents the parameter list that can be used in the keda tag
Expand Down Expand Up @@ -109,6 +110,9 @@ type Params struct {

// RangeSeparator is the 'range' tag parameter defining the separator for range values
RangeSeparator string

// Separator is the tag parameter to define which separator will be used
Separator string
}

// IsNested is a function that returns true if the parameter is nested
Expand Down Expand Up @@ -208,9 +212,11 @@ func (sc *ScalerConfig) setValue(field reflect.Value, params Params) error {
enumMap[e] = true
}
missingMap := make(map[string]bool)
split := strings.FieldsFunc(valFromConfig, func(r rune) bool {
return strings.ContainsRune(elemSeparator, r)
})
separator = elemSeparator

Check failure on line 215 in pkg/scalers/scalersconfig/typed_config.go

View workflow job for this annotation

GitHub Actions / Static Checks

undefined: separator
if params.Separator != "" {
separator = params.Separator

Check failure on line 217 in pkg/scalers/scalersconfig/typed_config.go

View workflow job for this annotation

GitHub Actions / Static Checks

undefined: separator
}
split := strings.Split(valFromConfig, separator)

Check failure on line 219 in pkg/scalers/scalersconfig/typed_config.go

View workflow job for this annotation

GitHub Actions / Static Checks

undefined: separator
for _, s := range split {
s := strings.TrimSpace(s)
if !enumMap[s] {
Expand All @@ -226,9 +232,11 @@ func (sc *ScalerConfig) setValue(field reflect.Value, params Params) error {
for _, e := range params.ExclusiveSet {
exclusiveMap[e] = true
}
split := strings.FieldsFunc(valFromConfig, func(r rune) bool {
return strings.ContainsRune(elemSeparator, r)
})
separator = elemSeparator

Check failure on line 235 in pkg/scalers/scalersconfig/typed_config.go

View workflow job for this annotation

GitHub Actions / Static Checks

undefined: separator
if params.Separator != "" {
separator = params.Separator

Check failure on line 237 in pkg/scalers/scalersconfig/typed_config.go

View workflow job for this annotation

GitHub Actions / Static Checks

undefined: separator
}
split := strings.Split(valFromConfig, separator)

Check failure on line 239 in pkg/scalers/scalersconfig/typed_config.go

View workflow job for this annotation

GitHub Actions / Static Checks

undefined: separator
exclusiveCount := 0
for _, s := range split {
s := strings.TrimSpace(s)
Expand Down Expand Up @@ -280,9 +288,11 @@ func setConfigValueURLParams(params Params, valFromConfig string, field reflect.
// setConfigValueMap is a function that sets the value of the map field
func setConfigValueMap(params Params, valFromConfig string, field reflect.Value) error {
field.Set(reflect.MakeMap(reflect.MapOf(field.Type().Key(), field.Type().Elem())))
split := strings.FieldsFunc(valFromConfig, func(r rune) bool {
return strings.ContainsRune(elemSeparator, r)
})
separator = elemSeparator

Check failure on line 291 in pkg/scalers/scalersconfig/typed_config.go

View workflow job for this annotation

GitHub Actions / Static Checks

undefined: separator
if params.Separator != "" {
separator = params.Separator

Check failure on line 293 in pkg/scalers/scalersconfig/typed_config.go

View workflow job for this annotation

GitHub Actions / Static Checks

undefined: separator
}
split := string.Split(valFromConfig, separator)

Check failure on line 295 in pkg/scalers/scalersconfig/typed_config.go

View workflow job for this annotation

GitHub Actions / Static Checks

string.Split undefined (type string has no field or method Split)

Check failure on line 295 in pkg/scalers/scalersconfig/typed_config.go

View workflow job for this annotation

GitHub Actions / Static Checks

undefined: separator
for _, s := range split {
s := strings.TrimSpace(s)
kv := strings.Split(s, elemKeyValSeparator)
Expand Down Expand Up @@ -348,9 +358,11 @@ func setConfigValueRange(params Params, valFromConfig string, field reflect.Valu
// setConfigValueSlice is a function that sets the value of the slice field
func setConfigValueSlice(params Params, valFromConfig string, field reflect.Value) error {
elemIfc := reflect.New(field.Type().Elem()).Interface()
split := strings.FieldsFunc(valFromConfig, func(r rune) bool {
return strings.ContainsRune(elemSeparator, r)
})
separator = elemSeparator
if params.Separator != "" {
separator = params.Separator
}
split := strings.Split(valFromConfig, separator)
for i, s := range split {
s := strings.TrimSpace(s)
if canRange(s, params.RangeSeparator, field) {
Expand Down Expand Up @@ -481,6 +493,10 @@ func paramsFromTag(tag string, field reflect.StructField) (Params, error) {
if len(tsplit) == 2 {
params.RangeSeparator = strings.TrimSpace(tsplit[1])
}
case separatorTag:
if len(tsplit) > 1 {
params.Separator = strings.TrimSpace(tsplit[1])
}
case "":
continue
default:
Expand Down

0 comments on commit 6ce36ca

Please sign in to comment.