This package is an alternative to gocty for situations where static Go types are not desired and the application instead wishes to remain in the cty dynamic type system.
28 lines
1.0 KiB
Go
28 lines
1.0 KiB
Go
package zcldec
|
|
|
|
import (
|
|
"github.com/zclconf/go-cty/cty"
|
|
"github.com/zclconf/go-zcl/zcl"
|
|
)
|
|
|
|
// Decode interprets the given body using the given specification and returns
|
|
// the resulting value. If the given body is not valid per the spec, error
|
|
// diagnostics are returned and the returned value is likely to be incomplete.
|
|
//
|
|
// The ctx argument may be nil, in which case any references to variables or
|
|
// functions will produce error diagnostics.
|
|
func Decode(body zcl.Body, spec Spec, ctx *zcl.EvalContext) (cty.Value, zcl.Diagnostics) {
|
|
val, _, diags := decode(body, nil, ctx, spec, false)
|
|
return val, diags
|
|
}
|
|
|
|
// PartialDecode is like Decode except that it permits "leftover" items in
|
|
// the top-level body, which are returned as a new body to allow for
|
|
// further processing.
|
|
//
|
|
// Any descendent block bodies are _not_ decoded partially and thus must
|
|
// be fully described by the given specification.
|
|
func PartialDecode(body zcl.Body, spec Spec, ctx *zcl.EvalContext) (cty.Value, zcl.Body, zcl.Diagnostics) {
|
|
return decode(body, nil, ctx, spec, true)
|
|
}
|