// lexOperationType lexes a query or mutation operation type. func lexOperationType(l *lex.Lexer) lex.StateFn { for { r := l.Next() if isNameSuffix(r) { continue // absorb } l.Backup() // l.Pos would be index of the end of operation type + 1. word := l.Input[l.Start:l.Pos] if word == "mutation" { l.Emit(itemOpType) l.Mode = mutationMode } else if word == "fragment" { l.Emit(itemOpType) l.Mode = fragmentMode } else if word == "query" { l.Emit(itemOpType) l.Mode = queryMode } else { if l.Mode == 0 { l.Errorf("Invalid operation type") } } break } return lexText }
func lexOperationType(l *lex.Lexer) lex.StateFn { for { r := l.Next() if isNameSuffix(r) { continue // absorb } l.Backup() word := l.Input[l.Start:l.Pos] if word == "mutation" { l.Emit(itemOpType) l.Mode = mutationMode } else if word == "query" { l.Emit(itemOpType) l.Mode = queryMode } break } return lexText }