Clarify pipeline composition envelope handling
This commit is contained in:
@@ -26,18 +26,13 @@ type compositionNode struct {
|
||||
value string
|
||||
path string
|
||||
sources []string
|
||||
line int
|
||||
column int
|
||||
fields []compositionField
|
||||
items []*compositionNode
|
||||
}
|
||||
|
||||
type compositionField struct {
|
||||
key string
|
||||
value *compositionNode
|
||||
order int
|
||||
line int
|
||||
column int
|
||||
key string
|
||||
value *compositionNode
|
||||
}
|
||||
|
||||
// compositionValueRecord is a deterministic semantic leaf projection. Lists
|
||||
@@ -104,7 +99,7 @@ func buildCompositionNode(node *yaml.Node, source, path string) (*compositionNod
|
||||
}
|
||||
result := &compositionNode{
|
||||
kind: node.Kind, tag: node.Tag, value: node.Value, path: path,
|
||||
sources: []string{source}, line: node.Line, column: node.Column,
|
||||
sources: []string{source},
|
||||
}
|
||||
|
||||
switch node.Kind {
|
||||
@@ -139,10 +134,7 @@ func buildCompositionNode(node *yaml.Node, source, path string) (*compositionNod
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
result.fields = append(result.fields, compositionField{
|
||||
key: key, value: child, order: len(result.fields),
|
||||
line: keyNode.Line, column: keyNode.Column,
|
||||
})
|
||||
result.fields = append(result.fields, compositionField{key: key, value: child})
|
||||
}
|
||||
case yaml.SequenceNode:
|
||||
for index, childNode := range node.Content {
|
||||
@@ -263,7 +255,6 @@ func mergeAdditiveNodes(base, incoming *compositionNode) (*compositionNode, erro
|
||||
index := compositionFieldIndex(base.fields, incomingField.key)
|
||||
if index < 0 {
|
||||
field := cloneCompositionField(incomingField)
|
||||
field.order = len(base.fields)
|
||||
base.fields = append(base.fields, field)
|
||||
continue
|
||||
}
|
||||
@@ -322,7 +313,6 @@ func mergeOverlayNodes(base, overlay *compositionNode) (*compositionNode, error)
|
||||
index := compositionFieldIndex(base.fields, overlayField.key)
|
||||
if index < 0 {
|
||||
field := cloneCompositionField(overlayField)
|
||||
field.order = len(base.fields)
|
||||
base.fields = append(base.fields, field)
|
||||
continue
|
||||
}
|
||||
@@ -644,7 +634,7 @@ func cloneCompositionNode(node *compositionNode) *compositionNode {
|
||||
}
|
||||
clone := &compositionNode{
|
||||
kind: node.kind, tag: node.tag, value: node.value, path: node.path,
|
||||
sources: append([]string(nil), node.sources...), line: node.line, column: node.column,
|
||||
sources: append([]string(nil), node.sources...),
|
||||
}
|
||||
for _, field := range node.fields {
|
||||
clone.fields = append(clone.fields, cloneCompositionField(field))
|
||||
@@ -656,10 +646,7 @@ func cloneCompositionNode(node *compositionNode) *compositionNode {
|
||||
}
|
||||
|
||||
func cloneCompositionField(field compositionField) compositionField {
|
||||
return compositionField{
|
||||
key: field.key, value: cloneCompositionNode(field.value), order: field.order,
|
||||
line: field.line, column: field.column,
|
||||
}
|
||||
return compositionField{key: field.key, value: cloneCompositionNode(field.value)}
|
||||
}
|
||||
|
||||
func compositionFieldIndex(fields []compositionField, key string) int {
|
||||
|
||||
Reference in New Issue
Block a user