lex.go raw
1 package hcl
2
3 import (
4 "unicode"
5 "unicode/utf8"
6 )
7
8 type lexModeValue byte
9
10 const (
11 lexModeUnknown lexModeValue = iota
12 lexModeHcl
13 lexModeJson
14 )
15
16 // lexMode returns whether we're going to be parsing in JSON
17 // mode or HCL mode.
18 func lexMode(v []byte) lexModeValue {
19 var (
20 r rune
21 w int
22 offset int
23 )
24
25 for {
26 r, w = utf8.DecodeRune(v[offset:])
27 offset += w
28 if unicode.IsSpace(r) {
29 continue
30 }
31 if r == '{' {
32 return lexModeJson
33 }
34 break
35 }
36
37 return lexModeHcl
38 }
39