| package hcldec |
| |
| import ( |
| "github.com/hashicorp/hcl/v2" |
| "github.com/zclconf/go-cty/cty" |
| ) |
| |
| func decode(body hcl.Body, blockLabels []blockLabel, ctx *hcl.EvalContext, spec Spec, partial bool) (cty.Value, hcl.Body, hcl.Diagnostics) { |
| schema := ImpliedSchema(spec) |
| |
| var content *hcl.BodyContent |
| var diags hcl.Diagnostics |
| var leftovers hcl.Body |
| |
| if partial { |
| content, leftovers, diags = body.PartialContent(schema) |
| } else { |
| content, diags = body.Content(schema) |
| } |
| |
| val, valDiags := spec.decode(content, blockLabels, ctx) |
| diags = append(diags, valDiags...) |
| |
| return val, leftovers, diags |
| } |
| |
| func impliedType(spec Spec) cty.Type { |
| return spec.impliedType() |
| } |
| |
| func sourceRange(body hcl.Body, blockLabels []blockLabel, spec Spec) hcl.Range { |
| schema := ImpliedSchema(spec) |
| content, _, _ := body.PartialContent(schema) |
| |
| return spec.sourceRange(content, blockLabels) |
| } |