]>
Commit | Line | Data |
---|---|---|
bae9f6d2 JC |
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 | } |