Merge pull request #610 from twz123/transformer-no-create-arrays

Proposal: Make transformer configs array-aware
This commit is contained in:
Jeff Regan
2019-06-17 16:22:09 -07:00
committed by GitHub
3 changed files with 198 additions and 7 deletions

View File

@@ -33,18 +33,20 @@ func MutateField(
return nil
}
_, found := m[pathToField[0]]
firstPathSegment, isArray := getFirstPathSegment(pathToField)
_, found := m[firstPathSegment]
if !found {
if !createIfNotPresent {
if !createIfNotPresent || isArray {
return nil
}
m[pathToField[0]] = map[string]interface{}{}
m[firstPathSegment] = map[string]interface{}{}
}
if len(pathToField) == 1 {
var err error
for _, fn := range fns {
m[pathToField[0]], err = fn(m[pathToField[0]])
m[firstPathSegment], err = fn(m[firstPathSegment])
if err != nil {
return err
}
@@ -52,7 +54,7 @@ func MutateField(
return nil
}
v := m[pathToField[0]]
v := m[firstPathSegment]
newPathToField := pathToField[1:]
switch typedV := v.(type) {
case nil:
@@ -79,3 +81,10 @@ func MutateField(
return fmt.Errorf("%#v is not expected to be a primitive type", typedV)
}
}
func getFirstPathSegment(pathToField []string) (string, bool) {
if strings.HasSuffix(pathToField[0], "[]") {
return pathToField[0][:len(pathToField[0])-2], true
}
return pathToField[0], false
}