|
- package hcl
-
- import (
- "fmt"
-
- "github.com/hashicorp/hcl/hcl/ast"
- hclParser "github.com/hashicorp/hcl/hcl/parser"
- jsonParser "github.com/hashicorp/hcl/json/parser"
- )
-
- // ParseBytes accepts as input byte slice and returns ast tree.
- //
- // Input can be either JSON or HCL
- func ParseBytes(in []byte) (*ast.File, error) {
- return parse(in)
- }
-
- // ParseString accepts input as a string and returns ast tree.
- func ParseString(input string) (*ast.File, error) {
- return parse([]byte(input))
- }
-
- func parse(in []byte) (*ast.File, error) {
- switch lexMode(in) {
- case lexModeHcl:
- return hclParser.Parse(in)
- case lexModeJson:
- return jsonParser.Parse(in)
- }
-
- return nil, fmt.Errorf("unknown config format")
- }
-
- // Parse parses the given input and returns the root object.
- //
- // The input format can be either HCL or JSON.
- func Parse(input string) (*ast.File, error) {
- return parse([]byte(input))
- }
|