aboutsummaryrefslogblamecommitdiffhomepage
path: root/vendor/github.com/hashicorp/hcl2/hcldec/decode.go
blob: 6cf93fedd3e9ef286b4adb4af1ed5da6cf0b561c (plain) (tree)



































                                                                                                                                            
package hcldec

import (
	"github.com/hashicorp/hcl2/hcl"
	"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)
}