diff options
author | Matt Holt <mholt@users.noreply.github.com> | 2020-05-05 12:27:49 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-05 12:27:49 -0600 |
commit | 52305618dfc4289e5a3cfcf848450500ef8fa21c (patch) | |
tree | ecec36223419b7cef771ec23f532e9324dbd6cfe /caddyconfig/caddyfile/lexer.go | |
parent | e051e119d1dff75972ed9b07cf97bbb989ba8daa (diff) |
caddyfile: Support backticks as quotes (closes #2591) (#3242)
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 { |