| Sketch🕴️ | 305f817 | 2026-02-27 13:58:43 +0400 | [diff] [blame] | 1 | package loop |
| 2 | |||||
| 3 | import ( | ||||
| 4 | "bufio" | ||||
| 5 | "fmt" | ||||
| 6 | "io" | ||||
| 7 | ) | ||||
| 8 | |||||
| 9 | type PromptReader interface { | ||||
| 10 | Read() (string, error) | ||||
| 11 | } | ||||
| 12 | |||||
| 13 | type IOReaderPromptReader struct { | ||||
| 14 | s *bufio.Scanner | ||||
| 15 | } | ||||
| 16 | |||||
| 17 | func NewIOReaderPromptReader(r io.Reader) *IOReaderPromptReader { | ||||
| 18 | return &IOReaderPromptReader{ | ||||
| 19 | s: bufio.NewScanner(r), | ||||
| 20 | } | ||||
| 21 | } | ||||
| 22 | |||||
| 23 | func (r IOReaderPromptReader) Read() (string, error) { | ||||
| 24 | if !r.s.Scan() { | ||||
| 25 | return "", fmt.Errorf("done") | ||||
| 26 | } | ||||
| 27 | return r.s.Text(), nil | ||||
| 28 | } | ||||