filters: clean up implementation

Address a few cleanup items in the parser. Currently, we don't handle
compound values and we remove a panic when part of the input is not
consumed.

Signed-off-by: Stephen J Day <stephen.day@docker.com>
This commit is contained in:
Stephen J Day
2017-06-20 17:50:06 -07:00
parent 80656bf8ca
commit 3d5ee9e8b8
4 changed files with 49 additions and 33 deletions

View File

@@ -72,7 +72,7 @@ loop:
switch tok {
case ',':
pos, tok, _ := p.scanner.scan()
if tok != tokenSelectorSeparator {
if tok != tokenSeparator {
return nil, p.mkerr(pos, "expected a separator")
}
@@ -85,7 +85,7 @@ loop:
case tokenEOF:
break loop
default:
panic("unconsumed input")
return nil, p.mkerr(p.scanner.ppos, "unexpected input: %v", string(tok))
}
}
@@ -99,7 +99,7 @@ func (p *parser) selector() (selector, error) {
}
switch p.scanner.peek() {
case tokenSelectorSeparator, tokenEOF:
case tokenSeparator, tokenEOF:
return selector{
fieldpath: fieldpath,
operator: operatorPresent,
@@ -140,7 +140,7 @@ loop:
switch tok {
case '.':
pos, tok, _ := p.scanner.scan() // consume separator
if tok != tokenFieldSeparator {
if tok != tokenSeparator {
return nil, p.mkerr(pos, "expected a field separator (`.`)")
}