Documentation
¶
Index ¶
- Constants
- func NewIOReader(reader io.Reader) ro.Observable[[]byte]
- func NewIOReaderLine(reader io.Reader) ro.Observable[[]byte]
- func NewIOWriter(writer io.Writer) func(ro.Observable[[]byte]) ro.Observable[int]
- func NewPrompt(prompt string) ro.Observable[[]byte]
- func NewStdReader() ro.Observable[[]byte]
- func NewStdReaderLine() ro.Observable[[]byte]
- func NewStdWriter() func(ro.Observable[[]byte]) ro.Observable[int]
Examples ¶
Constants ¶
const IOReaderBufferSize = 1024
Variables ¶
This section is empty.
Functions ¶
func NewIOReader ¶
func NewIOReader(reader io.Reader) ro.Observable[[]byte]
NewIOReader creates an observable that reads bytes from an io.Reader. Play: https://go.dev/play/p/b75Poy3EVYn
Example ¶
// Read data from a string reader data := "Hello, World! This is a test." reader := strings.NewReader(data) observable := NewIOReader(reader) subscription := observable.Subscribe(ro.PrintObserver[[]byte]()) defer subscription.Unsubscribe()
Output: Next: [72 101 108 108 111 44 32 87 111 114 108 100 33 32 84 104 105 115 32 105 115 32 97 32 116 101 115 116 46] Completed
Example (WithError) ¶
// Read data with potential errors
reader := strings.NewReader("Hello, World!")
observable := NewIOReader(reader)
subscription := observable.Subscribe(ro.PrintObserver[[]byte]())
defer subscription.Unsubscribe()
Output: Next: [72 101 108 108 111 44 32 87 111 114 108 100 33] Completed
func NewIOReaderLine ¶
func NewIOReaderLine(reader io.Reader) ro.Observable[[]byte]
NewIOReaderLine creates an observable that reads lines from an io.Reader. Play: https://go.dev/play/p/oMv2jYVSLqd
Example ¶
// Read lines from a string reader data := "Line 1\nLine 2\nLine 3\n" reader := strings.NewReader(data) observable := NewIOReaderLine(reader) subscription := observable.Subscribe(ro.PrintObserver[[]byte]()) defer subscription.Unsubscribe()
Output: Next: [76 105 110 101 32 49] Next: [76 105 110 101 32 50] Next: [76 105 110 101 32 51] Completed
Example (WithLargeFile) ¶
// Read lines from a large text data := `Line 1: This is the first line Line 2: This is the second line Line 3: This is the third line Line 4: This is the fourth line Line 5: This is the fifth line` reader := strings.NewReader(data) observable := NewIOReaderLine(reader) subscription := observable.Subscribe(ro.PrintObserver[[]byte]()) defer subscription.Unsubscribe()
Output: Next: [76 105 110 101 32 49 58 32 84 104 105 115 32 105 115 32 116 104 101 32 102 105 114 115 116 32 108 105 110 101] Next: [76 105 110 101 32 50 58 32 84 104 105 115 32 105 115 32 116 104 101 32 115 101 99 111 110 100 32 108 105 110 101] Next: [76 105 110 101 32 51 58 32 84 104 105 115 32 105 115 32 116 104 101 32 116 104 105 114 100 32 108 105 110 101] Next: [76 105 110 101 32 52 58 32 84 104 105 115 32 105 115 32 116 104 101 32 102 111 117 114 116 104 32 108 105 110 101] Next: [76 105 110 101 32 53 58 32 84 104 105 115 32 105 115 32 116 104 101 32 102 105 102 116 104 32 108 105 110 101] Completed
func NewIOWriter ¶
func NewIOWriter(writer io.Writer) func(ro.Observable[[]byte]) ro.Observable[int]
NewIOWriter creates a sink that writes byte slices to an io.Writer and emits the total bytes written. Play: https://go.dev/play/p/XoLdEcsmKxU
Example ¶
// Write data to a buffer
var buf bytes.Buffer
writer := &buf
data := ro.Just(
[]byte("Hello, "),
[]byte("World!"),
)
observable := ro.Pipe1(
data,
NewIOWriter(writer),
)
subscription := observable.Subscribe(ro.PrintObserver[int]())
defer subscription.Unsubscribe()
Output: Next: 13 Completed
Example (WithError) ¶
// Write data with potential errors
var buf bytes.Buffer
writer := &buf
data := ro.Just(
[]byte("Hello, "),
[]byte("World!"),
)
observable := ro.Pipe1(
data,
NewIOWriter(writer),
)
subscription := observable.Subscribe(ro.PrintObserver[int]())
defer subscription.Unsubscribe()
Output: Next: 13 Completed
func NewPrompt ¶
func NewPrompt(prompt string) ro.Observable[[]byte]
NewPrompt creates an observable that reads user input after displaying a prompt.
func NewStdReader ¶
func NewStdReader() ro.Observable[[]byte]
NewStdReader creates an observable that reads bytes from standard input.
Example ¶
// Read from standard input
// Simulate stdin input by temporarily redirecting stdin
originalStdin := os.Stdin
defer func() { os.Stdin = originalStdin }()
// Create a pipe to simulate stdin
r, w, _ := os.Pipe()
os.Stdin = r
// Write test data to stdin
go func() {
w.WriteString("Hello from stdin!")
w.Close()
}()
observable := NewStdReader()
subscription := observable.Subscribe(ro.PrintObserver[[]byte]())
defer subscription.Unsubscribe()
Output: Next: [72 101 108 108 111 32 102 114 111 109 32 115 116 100 105 110 33] Completed
func NewStdReaderLine ¶
func NewStdReaderLine() ro.Observable[[]byte]
NewStdReaderLine creates an observable that reads lines from standard input.
Example ¶
// Read lines from standard input
// Simulate stdin input by temporarily redirecting stdin
originalStdin := os.Stdin
defer func() { os.Stdin = originalStdin }()
// Create a pipe to simulate stdin
r, w, _ := os.Pipe()
os.Stdin = r
// Write test data to stdin
go func() {
w.WriteString("Line 1\nLine 2\nLine 3\n")
w.Close()
}()
observable := NewStdReaderLine()
subscription := observable.Subscribe(ro.PrintObserver[[]byte]())
defer subscription.Unsubscribe()
Output: Next: [76 105 110 101 32 49] Next: [76 105 110 101 32 50] Next: [76 105 110 101 32 51] Completed
func NewStdWriter ¶
func NewStdWriter() func(ro.Observable[[]byte]) ro.Observable[int]
NewStdWriter creates a sink that writes byte slices to standard output and emits the total bytes written. Play: https://go.dev/play/p/9GjhDJIAs7z
Example ¶
// Write data to standard output
// For this example, we'll use a buffer to simulate stdout
var buf bytes.Buffer
data := ro.Just(
[]byte("Hello, "),
[]byte("World!"),
)
observable := ro.Pipe1(
data,
NewIOWriter(&buf),
)
subscription := observable.Subscribe(ro.PrintObserver[int]())
defer subscription.Unsubscribe()
Output: Next: 13 Completed
Types ¶
This section is empty.