Factor advance logic into helper function.

h/t @brendandburns
This commit is contained in:
Joshua Carp 2016-10-03 22:43:22 -04:00
parent be3f556b77
commit 6787b67152

View File

@ -382,16 +382,7 @@ Loop:
// parseField scans a field until a terminator
func (p *Parser) parseField(cur *ListNode) error {
p.consumeText()
Loop:
for {
switch r := p.next(); {
case r == '\\':
p.next()
case isTerminator(r):
p.backup()
break Loop
}
}
for p.advance() {}
value := p.consumeText()
if value == "*" {
cur.append(newWildcard())
@ -401,6 +392,18 @@ Loop:
return p.parseInsideAction(cur)
}
// advance scans until next non-escaped terminator
func (p *Parser) advance() bool {
r := p.next()
if r == '\\' {
p.next()
} else if isTerminator(r) {
p.backup()
return false
}
return true
}
// isTerminator reports whether the input is at valid termination character to appear after an identifier.
func isTerminator(r rune) bool {
if isSpace(r) || isEndOfLine(r) {