diff options
Diffstat (limited to 'caddyconfig/caddyfile/lexer.go')
-rwxr-xr-x | caddyconfig/caddyfile/lexer.go | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/caddyconfig/caddyfile/lexer.go b/caddyconfig/caddyfile/lexer.go index 687ff90..d9968ff 100755 --- a/caddyconfig/caddyfile/lexer.go +++ b/caddyconfig/caddyfile/lexer.go @@ -73,7 +73,7 @@ func (l *lexer) load(input io.Reader) error { // a token was loaded; false otherwise. func (l *lexer) next() bool { var val []rune - var comment, quoted, escaped bool + var comment, quoted, btQuoted, escaped bool makeToken := func() bool { l.token.Text = string(val) @@ -92,13 +92,13 @@ func (l *lexer) next() bool { panic(err) } - if !escaped && ch == '\\' { + if !escaped && !btQuoted && ch == '\\' { escaped = true continue } - if quoted { - if escaped { + if quoted || btQuoted { + if quoted && escaped { // all is literal in quoted area, // so only escape quotes if ch != '"' { @@ -106,7 +106,10 @@ func (l *lexer) next() bool { } escaped = false } else { - if ch == '"' { + if quoted && ch == '"' { + return makeToken() + } + if btQuoted && ch == '`' { return makeToken() } } @@ -151,6 +154,10 @@ func (l *lexer) next() bool { quoted = true continue } + if ch == '`' { + btQuoted = true + continue + } } if escaped { |