Handle keys with dash. ref #10
diff --git a/lexer.go b/lexer.go index 09598ec..b70ff74 100644 --- a/lexer.go +++ b/lexer.go
@@ -67,6 +67,10 @@ return unicode.IsLetter(r) || r == '_' } +func isKeyChar(r rune) bool { + return isAlphanumeric(r) || r == '-' +} + func isDigit(r rune) bool { return unicode.IsNumber(r) } @@ -276,7 +280,7 @@ func lexKey(l *lexer) stateFn { l.ignore() - for isAlphanumeric(l.next()) { + for isKeyChar(l.next()) { } l.backup() l.emit(tokenKey)
diff --git a/lexer_test.go b/lexer_test.go index f7ff7e1..9a98689 100644 --- a/lexer_test.go +++ b/lexer_test.go
@@ -84,6 +84,13 @@ }) } +func TestBasicKeyWithDash(t *testing.T) { + testFlow(t, "hello-world", []token{ + token{tokenKey, "hello-world"}, + token{tokenEOF, ""}, + }) +} + func TestBasicKeyWithUppercaseMix(t *testing.T) { testFlow(t, "helloHELLOHello", []token{ token{tokenKey, "helloHELLOHello"},