init
diff --git a/loop/prompt.go b/loop/prompt.go
new file mode 100644
index 0000000..c889247
--- /dev/null
+++ b/loop/prompt.go
@@ -0,0 +1,28 @@
+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
+}