@@ -101,18 +101,20 @@ To allow for multi-document YAML files set parser->relaxed option in pint config
101101func (p * Parser ) parseNode (node , parent * yaml.Node , group * Group , offsetLine , offsetColumn int , contentLines []string ) (groups []Group ) {
102102 switch node .Kind { // nolint: exhaustive
103103 case yaml .SequenceNode :
104- if parent != nil && nodeValue (parent ) == "groups" {
105- for _ , n := range unpackNodes (node ) {
106- if g , rulesMap , ok := tryParseGroup (n , offsetLine , offsetColumn , contentLines ); ok {
107- groups = append (groups , p .parseNode (rulesMap .val , rulesMap .key , & g , offsetLine , offsetColumn , contentLines )... )
108- }
104+ // First check for group list
105+ for _ , n := range unpackNodes (node ) {
106+ if g , rulesMap , ok := tryParseGroup (n , offsetLine , offsetColumn , contentLines ); ok {
107+ groups = append (groups , p .parseNode (rulesMap .val , rulesMap .key , & g , offsetLine , offsetColumn , contentLines )... )
109108 }
109+ }
110+ if len (groups ) > 0 {
110111 return groups
111112 }
112- // Try parsing rules.
113+
113114 if group == nil {
114115 group = & Group {} // nolint: exhaustruct
115116 }
117+ // Try parsing rules.
116118 for _ , n := range unpackNodes (node ) {
117119 if ret , isEmpty := parseRule (n , offsetLine , offsetColumn , contentLines ); ! isEmpty {
118120 group .Rules = append (group .Rules , ret )
@@ -122,7 +124,9 @@ func (p *Parser) parseNode(node, parent *yaml.Node, group *Group, offsetLine, of
122124 if len (group .Rules ) > 0 || (parent != nil && nodeValue (parent ) == "rules" && len (groups ) == 0 && group != nil ) {
123125 groups = append (groups , * group )
124126 }
125- return groups
127+ if len (groups ) > 0 {
128+ return groups
129+ }
126130 case yaml .MappingNode :
127131 for _ , field := range mappingNodes (node ) {
128132 groups = append (groups , p .parseNode (field .val , field .key , group , offsetLine , offsetColumn , contentLines )... )
0 commit comments