1
0
mirror of https://github.com/v2fly/v2ray-core.git synced 2025-01-17 23:06:30 -05:00
This commit is contained in:
Darien Raymond 2016-12-15 00:00:44 +01:00
parent b469dea315
commit 49202930ff
No known key found for this signature in database
GPG Key ID: 7251FFA14BB18169
2 changed files with 31 additions and 12 deletions

View File

@ -7,14 +7,16 @@ import (
type State byte
const (
StateContent State = 0
StateEscape State = 1
StateDoubleQuote State = 2
StateSingleQuote State = 3
StateComment State = 4
StateSlash State = 5
StateMultilineComment State = 6
StateMultilineCommentStar State = 7
StateContent State = iota
StateEscape
StateDoubleQuote
StateDoubleQuoteEscape
StateSingleQuote
StateSingleQuoteEscape
StateComment
StateSlash
StateMultilineComment
StateMultilineCommentStar
)
type Reader struct {
@ -51,15 +53,31 @@ func (v *Reader) Read(b []byte) (int, error) {
p = append(p, x)
v.state = StateContent
case StateDoubleQuote:
if x == '"' {
switch x {
case '"':
v.state = StateContent
}
p = append(p, x)
case '\\':
v.state = StateDoubleQuoteEscape
default:
p = append(p, x)
}
case StateDoubleQuoteEscape:
p = append(p, '\\', x)
v.state = StateDoubleQuote
case StateSingleQuote:
if x == '\'' {
switch x {
case '\'':
v.state = StateContent
}
p = append(p, x)
case '\\':
v.state = StateSingleQuoteEscape
default:
p = append(p, x)
}
case StateSingleQuoteEscape:
p = append(p, '\\', x)
v.state = StateSingleQuote
case StateComment:
if x == '\n' {
v.state = StateContent

View File

@ -32,6 +32,7 @@ text 2*/`, `
text text 2*`},
{`"//"content`, `"//"content`},
{`abcd'//'abcd`, `abcd'//'abcd`},
{`"\""`, `"\""`},
}
for _, testCase := range data {