mirror of
https://github.com/gogrlx/nats-server.git
synced 2026-04-02 03:38:42 -07:00
Fixed bug with block comments inside maps
This commit is contained in:
15
conf/lex.go
15
conf/lex.go
@@ -408,6 +408,18 @@ func lexMapKeyStart(lx *lexer) stateFn {
|
||||
case r == mapEnd:
|
||||
lx.next()
|
||||
return lexSkip(lx, lexMapEnd)
|
||||
case r == commentHashStart:
|
||||
lx.next()
|
||||
lx.push(lexMapKeyStart)
|
||||
return lexCommentStart
|
||||
case r == commentSlashStart:
|
||||
lx.next()
|
||||
rn := lx.next()
|
||||
if rn == commentSlashStart {
|
||||
lx.push(lexMapKeyStart)
|
||||
return lexCommentStart
|
||||
}
|
||||
lx.backup()
|
||||
}
|
||||
lx.ignore()
|
||||
lx.next()
|
||||
@@ -462,8 +474,7 @@ func lexMapValue(lx *lexer) stateFn {
|
||||
lx.backup()
|
||||
fallthrough
|
||||
case r == mapValTerm:
|
||||
return lx.errorf("Unexpected map value terminator '%s'.",
|
||||
mapValTerm)
|
||||
return lx.errorf("Unexpected map value terminator '%s'.", mapValTerm)
|
||||
case r == mapEnd:
|
||||
return lexSkip(lx, lexMapEnd)
|
||||
}
|
||||
|
||||
@@ -174,7 +174,7 @@ func (p *parser) setValue(val interface{}) {
|
||||
// Map processing
|
||||
if ctx, ok := p.ctx.(map[string]interface{}); ok {
|
||||
key := p.popKey()
|
||||
// FIXME(dlc), make sure error if redefining same key?
|
||||
// FIXME(dlc), make sure to error if redefining same key?
|
||||
ctx[key] = val
|
||||
}
|
||||
}
|
||||
|
||||
@@ -53,3 +53,46 @@ func TestSample1(t *testing.T) {
|
||||
}
|
||||
test(t, sample1, ex)
|
||||
}
|
||||
|
||||
var cluster = `
|
||||
cluster {
|
||||
port: 4244
|
||||
|
||||
authorization {
|
||||
user: route_user
|
||||
password: top_secret
|
||||
timeout: 1
|
||||
}
|
||||
|
||||
# Routes are actively solicited and connected to from this server.
|
||||
# Other servers can connect to us if they supply the correct credentials
|
||||
# in their routes definitions from above.
|
||||
|
||||
// Test both styles of comments
|
||||
|
||||
routes = [
|
||||
nats-route://foo:bar@apcera.me:4245
|
||||
nats-route://foo:bar@apcera.me:4246
|
||||
]
|
||||
}
|
||||
`
|
||||
|
||||
func TestSample2(t *testing.T) {
|
||||
ex := map[string]interface{} {
|
||||
"cluster": map[string]interface{} {
|
||||
"port": int64(4244),
|
||||
"authorization": map[string]interface{} {
|
||||
"user": "route_user",
|
||||
"password": "top_secret",
|
||||
"timeout": int64(1),
|
||||
},
|
||||
"routes": []interface{} {
|
||||
"nats-route://foo:bar@apcera.me:4245",
|
||||
"nats-route://foo:bar@apcera.me:4246",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
test(t, cluster, ex)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user