(line int, rootNodes []*ast.MappingValueNode)
| 732 | } |
| 733 | |
| 734 | func NodeStructure(line int, rootNodes []*ast.MappingValueNode) []*ast.MappingValueNode { |
| 735 | if len(rootNodes) == 0 { |
| 736 | return nil |
| 737 | } |
| 738 | |
| 739 | var candidate *ast.MappingValueNode |
| 740 | for _, node := range rootNodes { |
| 741 | if node.GetToken().Position.Line < line { |
| 742 | candidate = node |
| 743 | } else if node.GetToken().Position.Line == line { |
| 744 | return []*ast.MappingValueNode{node} |
| 745 | } else if candidate == nil { |
| 746 | return []*ast.MappingValueNode{} |
| 747 | } else { |
| 748 | break |
| 749 | } |
| 750 | } |
| 751 | nodes := []*ast.MappingValueNode{candidate} |
| 752 | candidates := walkNodes(line, candidate) |
| 753 | nodes = append(nodes, candidates...) |
| 754 | return nodes |
| 755 | } |
| 756 | |
| 757 | func walkNodes(line int, node *ast.MappingValueNode) []*ast.MappingValueNode { |
| 758 | var candidate ast.Node |
no test coverage detected