| package loop | |
| import ( | |
| "bufio" | |
| "fmt" | |
| "io" | |
| ) | |
| type PromptReader interface { | |
| Read() (string, error) | |
| } | |
| type IOReaderPromptReader struct { | |
| s *bufio.Scanner | |
| } | |
| func NewIOReaderPromptReader(r io.Reader) *IOReaderPromptReader { | |
| return &IOReaderPromptReader{ | |
| s: bufio.NewScanner(r), | |
| } | |
| } | |
| func (r IOReaderPromptReader) Read() (string, error) { | |
| if !r.s.Scan() { | |
| return "", fmt.Errorf("done") | |
| } | |
| return r.s.Text(), nil | |
| } |