gtsocial-umbx

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

parse.go (892B)


      1 package hcl
      2 
      3 import (
      4 	"fmt"
      5 
      6 	"github.com/hashicorp/hcl/hcl/ast"
      7 	hclParser "github.com/hashicorp/hcl/hcl/parser"
      8 	jsonParser "github.com/hashicorp/hcl/json/parser"
      9 )
     10 
     11 // ParseBytes accepts as input byte slice and returns ast tree.
     12 //
     13 // Input can be either JSON or HCL
     14 func ParseBytes(in []byte) (*ast.File, error) {
     15 	return parse(in)
     16 }
     17 
     18 // ParseString accepts input as a string and returns ast tree.
     19 func ParseString(input string) (*ast.File, error) {
     20 	return parse([]byte(input))
     21 }
     22 
     23 func parse(in []byte) (*ast.File, error) {
     24 	switch lexMode(in) {
     25 	case lexModeHcl:
     26 		return hclParser.Parse(in)
     27 	case lexModeJson:
     28 		return jsonParser.Parse(in)
     29 	}
     30 
     31 	return nil, fmt.Errorf("unknown config format")
     32 }
     33 
     34 // Parse parses the given input and returns the root object.
     35 //
     36 // The input format can be either HCL or JSON.
     37 func Parse(input string) (*ast.File, error) {
     38 	return parse([]byte(input))
     39 }