func decodeAsStringBlock()

in pkg/mptf_block.go [13:40]


func decodeAsStringBlock(dest *hclwrite.Block, src *golden.HclBlock, depth int, context *hcl.EvalContext) error {
	for n, attribute := range src.Attributes() {
		value, err := attribute.Value(context)
		if err != nil {
			return err
		}
		valueType := value.Type()
		if valueType != cty.String {
			value, err = convert.Convert(value, cty.String)
			if err != nil {
				return fmt.Errorf("cannot convert value to string, got: %s", valueType.FriendlyName())
			}
		}
		tokens, err := stringToHclWriteTokens(value.AsString())
		if err != nil {
			return err
		}
		dest.Body().SetAttributeRaw(n, tokens)
	}
	for _, b := range src.NestedBlocks() {
		blockType := b.Type
		newNestedBlock := dest.Body().AppendNewBlock(blockType, b.Labels)
		if err := decodeAsStringBlock(newNestedBlock, b, depth+1, context); err != nil {
			return err
		}
	}
	return nil
}