Fix corpus response parsing on "document"
Change-Id: Ib305c6430e997f5afdf07310844fab6c7f6443ac
diff --git a/parser/corpus_parser.go b/parser/corpus_parser.go
index 9debf3a..187a618 100644
--- a/parser/corpus_parser.go
+++ b/parser/corpus_parser.go
@@ -95,13 +95,13 @@
// ParseMapping parses a corpus mapping rule of the form "pattern <> replacement".
func (p *CorpusParser) ParseMapping(input string) (*CorpusMappingResult, error) {
- sepIdx := strings.Index(input, "<>")
- if sepIdx == -1 {
+ before, after, ok := strings.Cut(input, "<>")
+ if !ok {
return nil, fmt.Errorf("invalid corpus mapping rule: missing <> separator in %q", input)
}
- leftStr := strings.TrimSpace(input[:sepIdx])
- rightStr := strings.TrimSpace(input[sepIdx+2:])
+ leftStr := strings.TrimSpace(before)
+ rightStr := strings.TrimSpace(after)
if leftStr == "" {
return nil, fmt.Errorf("invalid corpus mapping rule: empty left side")
@@ -183,16 +183,16 @@
func (p *CorpusParser) parseField(input string) (*CorpusField, error) {
input = strings.TrimSpace(input)
- eqIdx := strings.Index(input, "=")
- if eqIdx == -1 {
+ before, after, ok := strings.Cut(input, "=")
+ if !ok {
if !p.AllowBareValues {
return nil, fmt.Errorf("invalid field expression: missing '=' in %q", input)
}
return p.parseBareValue(input)
}
- key := strings.TrimSpace(input[:eqIdx])
- rest := strings.TrimSpace(input[eqIdx+1:])
+ key := strings.TrimSpace(before)
+ rest := strings.TrimSpace(after)
if key == "" {
return nil, fmt.Errorf("invalid field expression: empty key")
diff --git a/parser/grammar_parser.go b/parser/grammar_parser.go
index 7c949f8..a224181 100644
--- a/parser/grammar_parser.go
+++ b/parser/grammar_parser.go
@@ -156,7 +156,7 @@
// Check if this parenthesis is inside brackets (part of an identifier)
insideBrackets := false
bracketDepth := 0
- for j := 0; j < i; j++ {
+ for j := range i {
if runes[j] == '[' {
bracketDepth++
} else if runes[j] == ']' {