summaryrefslogtreecommitdiff
path: root/cmd/hcldec
diff options
context:
space:
mode:
authorMartin Atkins <mart@degeneration.co.uk>2018-02-04 09:45:28 -0800
committerMartin Atkins <mart@degeneration.co.uk>2018-02-04 09:45:28 -0800
commitf65a097d171ff4f5007de72041835ac192295429 (patch)
treed916cb8e09c6f184284d7fe680ddb6a697c84b19 /cmd/hcldec
parentee147d9ee6291a6ae5a589c4a85f58f6e33d3a02 (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.go18
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",