|
|
@ -303,23 +303,23 @@ func MergeMapLists(a, b []any) []any {
|
|
|
|
continue
|
|
|
|
continue
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
var mergeKey string
|
|
|
|
var uniqueKey string
|
|
|
|
var mergeValue interface{}
|
|
|
|
var dedupValue interface{}
|
|
|
|
for k, v := range mapEntry {
|
|
|
|
for k, v := range mapEntry {
|
|
|
|
if strings.HasPrefix(k, mergePrefix) {
|
|
|
|
if strings.HasPrefix(k, mergePrefix) {
|
|
|
|
mergeKey = k
|
|
|
|
uniqueKey = k
|
|
|
|
mergeValue = v
|
|
|
|
dedupValue = v
|
|
|
|
bj, ok := b[j].(map[string]any)
|
|
|
|
bj, ok := b[j].(map[string]any)
|
|
|
|
if !ok {
|
|
|
|
if !ok {
|
|
|
|
continue
|
|
|
|
continue
|
|
|
|
}
|
|
|
|
}
|
|
|
|
bj[strings.TrimPrefix(mergeKey, mergePrefix)] = v
|
|
|
|
bj[strings.TrimPrefix(uniqueKey, mergePrefix)] = v
|
|
|
|
delete(bj, mergeKey)
|
|
|
|
delete(bj, uniqueKey)
|
|
|
|
break
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if len(mergeKey) > 0 {
|
|
|
|
if len(uniqueKey) > 0 {
|
|
|
|
strippedMergeKey := strings.TrimPrefix(mergeKey, mergePrefix)
|
|
|
|
strippedMergeKey := strings.TrimPrefix(uniqueKey, mergePrefix)
|
|
|
|
|
|
|
|
|
|
|
|
for i, sourceMapEntry := range out {
|
|
|
|
for i, sourceMapEntry := range out {
|
|
|
|
sourceMapEntry, ok := sourceMapEntry.(map[string]any)
|
|
|
|
sourceMapEntry, ok := sourceMapEntry.(map[string]any)
|
|
|
@ -327,7 +327,7 @@ func MergeMapLists(a, b []any) []any {
|
|
|
|
continue
|
|
|
|
continue
|
|
|
|
}
|
|
|
|
}
|
|
|
|
for k, v := range sourceMapEntry {
|
|
|
|
for k, v := range sourceMapEntry {
|
|
|
|
if (k == strippedMergeKey || k == mergeKey) && v == mergeValue {
|
|
|
|
if (k == strippedMergeKey || k == uniqueKey) && v == dedupValue {
|
|
|
|
mergedMapEntry := MergeMaps(sourceMapEntry, mapEntry)
|
|
|
|
mergedMapEntry := MergeMaps(sourceMapEntry, mapEntry)
|
|
|
|
out[i] = mergedMapEntry
|
|
|
|
out[i] = mergedMapEntry
|
|
|
|
break
|
|
|
|
break
|
|
|
|