Escape special characters in jsonpath field names.

Example: `{.items[*].metadata.labels.kubernetes\.io/hostname}`

[Resolves #31984]
This commit is contained in:
Joshua Carp
2016-10-02 23:54:13 -04:00
parent 475f6c5ef6
commit be3f556b77
2 changed files with 21 additions and 7 deletions

View File

@@ -382,19 +382,21 @@ Loop:
// parseField scans a field until a terminator
func (p *Parser) parseField(cur *ListNode) error {
p.consumeText()
var r rune
Loop:
for {
r = p.next()
if isTerminator(r) {
switch r := p.next(); {
case r == '\\':
p.next()
case isTerminator(r):
p.backup()
break
break Loop
}
}
value := p.consumeText()
if value == "*" {
cur.append(newWildcard())
} else {
cur.append(newField(value))
cur.append(newField(strings.Replace(value, "\\", "", -1)))
}
return p.parseInsideAction(cur)
}