Documentation
¶
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func NewCSVReader ¶
func NewCSVReader(reader *csv.Reader) ro.Observable[[]string]
NewCSVReader creates an observable that reads CSV records from a csv.Reader. Play: https://go.dev/play/p/ZB3apy60Ujv
Example ¶
// Read CSV data from a string csvData := `name,age,city Alice,30,New York Bob,25,Los Angeles Charlie,35,Chicago` reader := csv.NewReader(strings.NewReader(csvData)) observable := NewCSVReader(reader) subscription := observable.Subscribe(ro.PrintObserver[[]string]()) defer subscription.Unsubscribe()
Output: Next: [name age city] Next: [Alice 30 New York] Next: [Bob 25 Los Angeles] Next: [Charlie 35 Chicago] Completed
Example (WithCustomDelimiter) ¶
// Read CSV data with custom delimiter csvData := `name;age;city Alice;30;New York Bob;25;Los Angeles Charlie;35;Chicago` reader := csv.NewReader(strings.NewReader(csvData)) reader.Comma = ';' // Use semicolon as delimiter observable := NewCSVReader(reader) subscription := observable.Subscribe(ro.PrintObserver[[]string]()) defer subscription.Unsubscribe()
Output: Next: [name age city] Next: [Alice 30 New York] Next: [Bob 25 Los Angeles] Next: [Charlie 35 Chicago] Completed
Example (WithError) ¶
// Read CSV data with potential errors csvData := `name,age Alice,30,New York Bob,25,"Los Angeles, CA" Charlie,35,Chicago` reader := csv.NewReader(strings.NewReader(csvData)) observable := NewCSVReader(reader) subscription := observable.Subscribe(ro.PrintObserver[[]string]()) defer subscription.Unsubscribe()
Output: Next: [name age] Error: record on line 2: wrong number of fields
Example (WithQuotedFields) ¶
// Read CSV data with quoted fields csvData := `name,age,city "Alice Smith",30,"New York, NY" "Bob Johnson",25,"Los Angeles, CA" "Charlie Brown",35,"Chicago, IL"` reader := csv.NewReader(strings.NewReader(csvData)) observable := NewCSVReader(reader) subscription := observable.Subscribe(ro.PrintObserver[[]string]()) defer subscription.Unsubscribe()
Output: Next: [name age city] Next: [Alice Smith 30 New York, NY] Next: [Bob Johnson 25 Los Angeles, CA] Next: [Charlie Brown 35 Chicago, IL] Completed
func NewCSVWriter ¶
func NewCSVWriter(writer *csv.Writer) func(ro.Observable[[]string]) ro.Observable[int]
NewCSVWriter writes string slices to a CSV writer. Play: https://go.dev/play/p/J6gzkUHIMgj
Example ¶
// Write CSV data to a buffer
var buf bytes.Buffer
writer := csv.NewWriter(&buf)
data := ro.Just(
[]string{"name", "age", "city"},
[]string{"Alice", "30", "New York"},
[]string{"Bob", "25", "Los Angeles"},
[]string{"Charlie", "35", "Chicago"},
)
observable := ro.Pipe1(
data,
NewCSVWriter(writer),
)
subscription := observable.Subscribe(ro.PrintObserver[int]())
defer subscription.Unsubscribe()
Output: Next: 4 Completed
Example (WithCustomDelimiter) ¶
// Write CSV data with custom delimiter
var buf bytes.Buffer
writer := csv.NewWriter(&buf)
writer.Comma = ';' // Use semicolon as delimiter
data := ro.Just(
[]string{"name", "age", "city"},
[]string{"Alice", "30", "New York"},
[]string{"Bob", "25", "Los Angeles"},
[]string{"Charlie", "35", "Chicago"},
)
observable := ro.Pipe1(
data,
NewCSVWriter(writer),
)
subscription := observable.Subscribe(ro.PrintObserver[int]())
defer subscription.Unsubscribe()
Output: Next: 4 Completed
Example (WithError) ¶
// Write CSV data with a writer that fails on write
var buf bytes.Buffer
writer := csv.NewWriter(&buf)
writer.Comma = '\n'
data := ro.Just(
[]string{"name", "age", "city"},
[]string{"Alice", "30", "New York"},
[]string{"Bob", "25", "Los Angeles"},
[]string{"Charlie", "35", "Chicago"},
)
observable := ro.Pipe1(
data,
NewCSVWriter(writer),
)
subscription := observable.Subscribe(ro.PrintObserver[int]())
defer subscription.Unsubscribe()
Output: Next: 0 Error: csv: invalid field or comment delimiter
Example (WithQuotedFields) ¶
// Write CSV data with quoted fields
var buf bytes.Buffer
writer := csv.NewWriter(&buf)
data := ro.Just(
[]string{"name", "age", "city"},
[]string{"Alice Smith", "30", "New York, NY"},
[]string{"Bob Johnson", "25", "Los Angeles, CA"},
[]string{"Charlie Brown", "35", "Chicago, IL"},
)
observable := ro.Pipe1(
data,
NewCSVWriter(writer),
)
subscription := observable.Subscribe(ro.PrintObserver[int]())
defer subscription.Unsubscribe()
Output: Next: 4 Completed
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.