hcl/hclwrite
Martin Atkins 7d8f0ff870 hclwrite: Make block labels a node in their own right
All of the other subdivisions of a block were already nodes, but we'd
represented the labels as an undifferentiated set of nodes belonging
directly to the block's child node list.

Now that we support replacing the labels in the public API, that's a good
excuse to refactor this slightly to make the labels their own node. As
well as being consistent with everything else in Block, this also makes
it easier to implement the Block.SetLabels operation because we can
just  change the children of the labels node, rather than having to
carefully identify and extract the individual child nodes of the block
that happen to represent labels.

Internally this models the labels in a similar sort of way as the content
of a body, although we've kept the public API directly on the Block type
here because that's a more straightforward model for the use-cases we
currently know and matches better with the API of hcl.Block. This is just
an internal change for consistency.

I also added a few tests for having comments interspersed with labels
while I was here, because that helped to better exercise the new
parseBlockLabels function.
2020-08-21 11:30:32 -07:00
..
fuzz hclwrite: Add fuzz testing 2020-05-14 15:03:29 -04:00
ast.go hclwrite: NewEmptyFile function 2018-11-03 20:45:25 +00:00
ast_attribute.go Unfold the "hcl" directory up into the root 2019-09-09 16:08:19 -07:00
ast_block.go hclwrite: Make block labels a node in their own right 2020-08-21 11:30:32 -07:00
ast_block_test.go hclwrite: Make block labels a node in their own right 2020-08-21 11:30:32 -07:00
ast_body.go hclwrite: Allow constructing expressions from raw tokens 2019-11-19 15:35:01 -08:00
ast_body_test.go hclwrite: Allow constructing expressions from raw tokens 2019-11-19 15:35:01 -08:00
ast_expression.go hclwrite: Allow constructing expressions from raw tokens 2019-11-19 15:35:01 -08:00
ast_test.go hclwrite: Simplify internal data structures 2018-08-01 08:46:31 -07:00
doc.go hclwrite: Split Attribute and Block into their own source files 2018-11-03 09:21:43 -07:00
examples_test.go hclwrite: Generate multi-line objects and maps 2020-05-06 09:45:13 -04:00
format.go Unfold the "hcl" directory up into the root 2019-09-09 16:08:19 -07:00
format_test.go Unfold the "hcl" directory up into the root 2019-09-09 16:08:19 -07:00
generate.go hclwrite: Generate multi-line objects and maps 2020-05-06 09:45:13 -04:00
generate_test.go hclwrite: Generate multi-line objects and maps 2020-05-06 09:45:13 -04:00
native_node_sorter.go Unfold the "hcl" directory up into the root 2019-09-09 16:08:19 -07:00
node.go hclwrite: Make block labels a node in their own right 2020-08-21 11:30:32 -07:00
parser.go hclwrite: Make block labels a node in their own right 2020-08-21 11:30:32 -07:00
parser_test.go hclwrite: Make block labels a node in their own right 2020-08-21 11:30:32 -07:00
public.go Unfold the "hcl" directory up into the root 2019-09-09 16:08:19 -07:00
round_trip_test.go Unfold the "hcl" directory up into the root 2019-09-09 16:08:19 -07:00
tokens.go Use Unicode 12.0.0 grapheme cluster segmentation rules 2020-03-09 09:16:33 -07:00