mirror of
https://github.com/mikefarah/yq.git
synced 2026-07-08 06:45:38 +00:00
feat(parser): include positions
This commit is contained in:
parent
c573d2a63b
commit
807ccfbe53
@ -270,8 +270,15 @@ func (m *goccyMarshaller) Marshal(path string, o *CandidateNode) (ast.Node, erro
|
|||||||
return node, nil
|
return node, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (_ *goccyMarshaller) getPosition(o *CandidateNode) *goccyToken.Position {
|
||||||
|
return &goccyToken.Position{
|
||||||
|
Line: o.Line,
|
||||||
|
Column: o.Column,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (m *goccyMarshaller) marshalAlias(path string, o *CandidateNode) (ast.Node, error) {
|
func (m *goccyMarshaller) marshalAlias(path string, o *CandidateNode) (ast.Node, error) {
|
||||||
t := m.PushToken(goccyToken.Alias(o.Value, &goccyToken.Position{}))
|
t := m.PushToken(goccyToken.Alias(o.Value, m.getPosition(o)))
|
||||||
var value ast.Node
|
var value ast.Node
|
||||||
var err error
|
var err error
|
||||||
value, err = m.Marshal(path, o.Content[0])
|
value, err = m.Marshal(path, o.Content[0])
|
||||||
@ -298,7 +305,14 @@ func (m *goccyMarshaller) marshalSequence(path string, o *CandidateNode) (ast.No
|
|||||||
var err error
|
var err error
|
||||||
values := make([]ast.Node, len(o.Content))
|
values := make([]ast.Node, len(o.Content))
|
||||||
for i, content := range o.Content {
|
for i, content := range o.Content {
|
||||||
m.PushToken(goccyToken.SequenceEntry("-", &goccyToken.Position{}))
|
if !isFlowStyle {
|
||||||
|
entryToken := goccyToken.SequenceEntry("-", &goccyToken.Position{Line: content.Line, Column: o.Column})
|
||||||
|
m.PushToken(entryToken)
|
||||||
|
if seq.Start == nil {
|
||||||
|
seq.Start = entryToken
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
values[i], err = m.Marshal(path+"["+strconv.Itoa(i)+"]", content)
|
values[i], err = m.Marshal(path+"["+strconv.Itoa(i)+"]", content)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@ -315,7 +329,9 @@ func (m *goccyMarshaller) marshalSequence(path string, o *CandidateNode) (ast.No
|
|||||||
|
|
||||||
seq.Values = values
|
seq.Values = values
|
||||||
seq.ValueHeadComments = []*ast.CommentGroupNode{ast.CommentGroup([]*goccyToken.Token{goccyToken.Comment(o.HeadComment, o.HeadComment, &goccyToken.Position{})})}
|
seq.ValueHeadComments = []*ast.CommentGroupNode{ast.CommentGroup([]*goccyToken.Token{goccyToken.Comment(o.HeadComment, o.HeadComment, &goccyToken.Position{})})}
|
||||||
seq.FootComment = goccyMarshalFootComment(o.FootComment)
|
if o.FootComment != "" {
|
||||||
|
seq.FootComment = goccyMarshalFootComment(o.FootComment)
|
||||||
|
}
|
||||||
|
|
||||||
return seq, nil
|
return seq, nil
|
||||||
}
|
}
|
||||||
@ -332,7 +348,7 @@ func (m *goccyMarshaller) marshalMapping(path string, o *CandidateNode) (ast.Nod
|
|||||||
var err error
|
var err error
|
||||||
for i := 0; i < len(o.Content); i += 2 {
|
for i := 0; i < len(o.Content); i += 2 {
|
||||||
var childNode *ast.MappingValueNode
|
var childNode *ast.MappingValueNode
|
||||||
childNode, err = m.marshalMappingValueNode(path, o.Content[i], o.Content[i+1])
|
childNode, err = m.marshalMappingValueNode(path, o, o.Content[i], o.Content[i+1])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -364,7 +380,7 @@ func (m *goccyMarshaller) marshalMapping(path string, o *CandidateNode) (ast.Nod
|
|||||||
return mapping, nil
|
return mapping, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *goccyMarshaller) marshalMappingValueNode(path string, keyNode, valueNode *CandidateNode) (*ast.MappingValueNode, error) {
|
func (m *goccyMarshaller) marshalMappingValueNode(path string, entryNode, keyNode, valueNode *CandidateNode) (*ast.MappingValueNode, error) {
|
||||||
var key ast.MapKeyNode
|
var key ast.MapKeyNode
|
||||||
var err error
|
var err error
|
||||||
key, err = m.marshalMapKeyNode(path, keyNode)
|
key, err = m.marshalMapKeyNode(path, keyNode)
|
||||||
@ -372,7 +388,7 @@ func (m *goccyMarshaller) marshalMappingValueNode(path string, keyNode, valueNod
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
separatorToken := m.PushToken(goccyToken.MappingValue(&goccyToken.Position{}))
|
separatorToken := m.PushToken(goccyToken.MappingValue(m.getPosition(entryNode)))
|
||||||
|
|
||||||
value, err := m.Marshal(key.GetPath(), valueNode)
|
value, err := m.Marshal(key.GetPath(), valueNode)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -414,7 +430,7 @@ func (m *goccyMarshaller) marshalScalar(path string, o *CandidateNode) (ast.Scal
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
scalarToken := m.PushToken(goccyToken.Literal(o.Value, o.Value, &goccyToken.Position{}))
|
scalarToken := m.PushToken(goccyToken.Literal(o.Value, o.Value, m.getPosition(o)))
|
||||||
|
|
||||||
if v == nil {
|
if v == nil {
|
||||||
n := ast.Null(scalarToken)
|
n := ast.Null(scalarToken)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user