mirror of
https://github.com/mikefarah/yq.git
synced 2026-03-10 15:54:26 +00:00
Pulling out common code
This commit is contained in:
parent
06ea4cf62e
commit
eb4fde4ef8
@ -47,6 +47,18 @@ func (dec *tomlDecoder) Init(reader io.Reader) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (dec *tomlDecoder) attachOrphanedCommentsToNode(tableNodeValue *CandidateNode) {
|
||||||
|
if len(dec.pendingComments) > 0 {
|
||||||
|
comments := strings.Join(dec.pendingComments, "\n")
|
||||||
|
if tableNodeValue.HeadComment == "" {
|
||||||
|
tableNodeValue.HeadComment = comments
|
||||||
|
} else {
|
||||||
|
tableNodeValue.HeadComment = tableNodeValue.HeadComment + "\n" + comments
|
||||||
|
}
|
||||||
|
dec.pendingComments = make([]string, 0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (dec *tomlDecoder) getFullPath(tomlNode *toml.Node) []interface{} {
|
func (dec *tomlDecoder) getFullPath(tomlNode *toml.Node) []interface{} {
|
||||||
path := make([]interface{}, 0)
|
path := make([]interface{}, 0)
|
||||||
for {
|
for {
|
||||||
@ -344,14 +356,8 @@ func (dec *tomlDecoder) processTable(currentNode *toml.Node) (bool, error) {
|
|||||||
if tableValue.Kind != toml.KeyValue {
|
if tableValue.Kind != toml.KeyValue {
|
||||||
log.Debug("got an empty table (or reached next section)")
|
log.Debug("got an empty table (or reached next section)")
|
||||||
// If the table had only comments, attach them to the table itself so they don't leak to the next node.
|
// If the table had only comments, attach them to the table itself so they don't leak to the next node.
|
||||||
if !sawKeyValue && len(dec.pendingComments) > 0 {
|
if !sawKeyValue {
|
||||||
comments := strings.Join(dec.pendingComments, "\n")
|
dec.attachOrphanedCommentsToNode(tableNodeValue)
|
||||||
if tableNodeValue.HeadComment == "" {
|
|
||||||
tableNodeValue.HeadComment = comments
|
|
||||||
} else {
|
|
||||||
tableNodeValue.HeadComment = tableNodeValue.HeadComment + "\n" + comments
|
|
||||||
}
|
|
||||||
dec.pendingComments = make([]string, 0)
|
|
||||||
}
|
}
|
||||||
runAgainstCurrentExp = true
|
runAgainstCurrentExp = true
|
||||||
break
|
break
|
||||||
@ -366,14 +372,8 @@ func (dec *tomlDecoder) processTable(currentNode *toml.Node) (bool, error) {
|
|||||||
}
|
}
|
||||||
// If we hit EOF after only seeing comments inside this table, attach them to the table itself
|
// If we hit EOF after only seeing comments inside this table, attach them to the table itself
|
||||||
// so they don't leak to whatever comes next.
|
// so they don't leak to whatever comes next.
|
||||||
if !sawKeyValue && len(dec.pendingComments) > 0 {
|
if !sawKeyValue {
|
||||||
comments := strings.Join(dec.pendingComments, "\n")
|
dec.attachOrphanedCommentsToNode(tableNodeValue)
|
||||||
if tableNodeValue.HeadComment == "" {
|
|
||||||
tableNodeValue.HeadComment = comments
|
|
||||||
} else {
|
|
||||||
tableNodeValue.HeadComment = tableNodeValue.HeadComment + "\n" + comments
|
|
||||||
}
|
|
||||||
dec.pendingComments = make([]string, 0)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
err = dec.d.DeeplyAssign(c, fullPath, tableNodeValue)
|
err = dec.d.DeeplyAssign(c, fullPath, tableNodeValue)
|
||||||
@ -454,14 +454,8 @@ func (dec *tomlDecoder) processArrayTable(currentNode *toml.Node) (bool, error)
|
|||||||
// so lets leave that expression for the next round of parsing
|
// so lets leave that expression for the next round of parsing
|
||||||
if exp.Kind == toml.ArrayTable || exp.Kind == toml.Table {
|
if exp.Kind == toml.ArrayTable || exp.Kind == toml.Table {
|
||||||
// If this array-table entry had only comments, attach them to the entry so they don't leak.
|
// If this array-table entry had only comments, attach them to the entry so they don't leak.
|
||||||
if !sawKeyValue && len(dec.pendingComments) > 0 {
|
if !sawKeyValue {
|
||||||
comments := strings.Join(dec.pendingComments, "\n")
|
dec.attachOrphanedCommentsToNode(tableNodeValue)
|
||||||
if tableNodeValue.HeadComment == "" {
|
|
||||||
tableNodeValue.HeadComment = comments
|
|
||||||
} else {
|
|
||||||
tableNodeValue.HeadComment = tableNodeValue.HeadComment + "\n" + comments
|
|
||||||
}
|
|
||||||
dec.pendingComments = make([]string, 0)
|
|
||||||
}
|
}
|
||||||
runAgainstCurrentExp = true
|
runAgainstCurrentExp = true
|
||||||
break
|
break
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user