...

Source file src/github.com/hashicorp/hcl/parse.go

Documentation: github.com/hashicorp/hcl

     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  }
    40  

View as plain text