diff options
| author | Martin Atkins <mart@degeneration.co.uk> | 2018-02-04 09:45:28 -0800 |
|---|---|---|
| committer | Martin Atkins <mart@degeneration.co.uk> | 2018-02-04 09:45:28 -0800 |
| commit | f65a097d171ff4f5007de72041835ac192295429 (patch) | |
| tree | d916cb8e09c6f184284d7fe680ddb6a697c84b19 /cmd/hcldec | |
| parent | ee147d9ee6291a6ae5a589c4a85f58f6e33d3a02 (diff) | |
cmd/hcldec: decode "array" blocks
These were missed on the previous pass, causing a disagreement with the
documentation.
Diffstat (limited to 'cmd/hcldec')
| -rw-r--r-- | cmd/hcldec/spec.go | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/cmd/hcldec/spec.go b/cmd/hcldec/spec.go index b7053bb..6081d68 100644 --- a/cmd/hcldec/spec.go +++ b/cmd/hcldec/spec.go @@ -64,6 +64,9 @@ func decodeSpecBlock(block *hcl.Block) (hcldec.Spec, hcl.Diagnostics) { case "object": return decodeObjectSpec(block.Body) + case "array": + return decodeArraySpec(block.Body) + case "attr": return decodeAttrSpec(block.Body, impliedName) @@ -112,6 +115,19 @@ func decodeObjectSpec(body hcl.Body) (hcldec.Spec, hcl.Diagnostics) { return spec, diags } +func decodeArraySpec(body hcl.Body) (hcldec.Spec, hcl.Diagnostics) { + content, diags := body.Content(specSchemaUnlabelled) + + spec := make(hcldec.TupleSpec, 0, len(content.Blocks)) + for _, block := range content.Blocks { + elemSpec, elemDiags := decodeSpecBlock(block) + diags = append(diags, elemDiags...) + spec = append(spec, elemSpec) + } + + return spec, diags +} + func decodeAttrSpec(body hcl.Body, impliedName string) (hcldec.Spec, hcl.Diagnostics) { type content struct { Name *string `hcl:"name"` @@ -429,7 +445,7 @@ var errSpec = &hcldec.LiteralSpec{ var specBlockTypes = []string{ "object", - "tuple", + "array", "literal", |
