(out io.Writer, in io.Reader, run commandRunner)
| 23 | type commandRunner func(io.Writer, *command) error |
| 24 | |
| 25 | func process(out io.Writer, in io.Reader, run commandRunner) error { |
| 26 | s := &countingScanner{bufio.NewScanner(in), 0} |
| 27 | |
| 28 | state := parsingText |
| 29 | var err error |
| 30 | for state != nil { |
| 31 | state, err = state(out, s, run) |
| 32 | if err != nil { |
| 33 | return fmt.Errorf("%d: %v", s.line, err) |
| 34 | } |
| 35 | } |
| 36 | |
| 37 | if err := s.Err(); err != nil { |
| 38 | return fmt.Errorf("%d: %v", s.line, err) |
| 39 | } |
| 40 | return nil |
| 41 | } |
| 42 | |
| 43 | type countingScanner struct { |
| 44 | *bufio.Scanner |
searching dependent graphs…