func mergeConfigMergeArr()

in merge.go [172:206]


func mergeConfigMergeArr(opts *options, to, from *Config) Error {
	l := len(to.fields.array())
	arr := from.fields.array()
	if l > len(arr) {
		l = len(arr)
	}

	var parent value = cfgSub{to}

	// merge array indexes available in to and from
	for i := 0; i < l; i++ {
		ctx := context{
			parent: parent,
			field:  fmt.Sprintf("%v", i),
		}

		// possible for individual index to be replaced
		idxOpts, err := fieldOptsOverride(opts, "", i)
		if err != nil {
			return err
		}
		old := to.fields.array()[i]
		merged, err := mergeValues(idxOpts, old, arr[i])
		if err != nil {
			return err
		}
		to.fields.setAt(i, parent, merged.cpy(ctx))
	}

	if len(arr) > l {
		// add additional array entries not yet in 'to'
		to.fields.append(parent, arr[l:])
	}
	return nil
}