Allow whitespace to term non-quoted string

This commit is contained in:
Derek Collison
2013-04-21 23:43:43 -04:00
parent dcdcb84295
commit ce8ff5d640
2 changed files with 7 additions and 3 deletions

View File

@@ -508,7 +508,7 @@ func lexMapEnd(lx *lexer) stateFn {
// Checks if the unquoted string was actually a boolean
func (lx *lexer) isBool() bool {
str := lx.input[lx.start:lx.pos]
return str == "true" || str == "false" || str == "TRUE" || str == "FALSE"
return str == "true" || str == "false" || str == "TRUE" || str == "FALSE"
}
// lexString consumes the inner contents of a string. It assumes that the
@@ -518,7 +518,8 @@ func lexString(lx *lexer) stateFn {
switch {
case r == '\\':
return lexStringEscape
case isNL(r) || r == eof || r == optValTerm:
// Termination of non-quoted strings
case isNL(r) || r == eof || r == optValTerm || isWhitespace(r):
lx.backup()
if lx.isBool() {
lx.emit(itemBool)

View File

@@ -361,7 +361,7 @@ t true
f false
tstr "true"
tkey = two
fkey = five
fkey = five # This should be a string
`
func TestNonQuotedStrings(t *testing.T) {
@@ -389,6 +389,9 @@ func TestNonQuotedStrings(t *testing.T) {
{itemString, "two", 12},
{itemKey, "fkey", 13},
{itemString, "five", 13},
{itemCommentStart, "", 13},
{itemText, " This should be a string", 13},
{itemEOF, "", 14},
}
lx := lex(noquotes)