| package hcl | |
| import ( | |
| "unicode" | |
| "unicode/utf8" | |
| ) | |
| type lexModeValue byte | |
| const ( | |
| lexModeUnknown lexModeValue = iota | |
| lexModeHcl | |
| lexModeJson | |
| ) | |
| // lexMode returns whether we're going to be parsing in JSON | |
| // mode or HCL mode. | |
| func lexMode(v []byte) lexModeValue { | |
| var ( | |
| r rune | |
| w int | |
| offset int | |
| ) | |
| for { | |
| r, w = utf8.DecodeRune(v[offset:]) | |
| offset += w | |
| if unicode.IsSpace(r) { | |
| continue | |
| } | |
| if r == '{' { | |
| return lexModeJson | |
| } | |
| break | |
| } | |
| return lexModeHcl | |
| } |