Class: Philiprehberger::CsvKit::Writer::StreamWriter

Inherits:
Object
  • Object
show all
Defined in:
lib/philiprehberger/csv_kit/writer.rb

Overview

Incremental writer that streams rows to an IO object one at a time.

Instance Method Summary collapse

Constructor Details

#initialize(io, headers:, dialect: nil) ⇒ StreamWriter

Returns a new instance of StreamWriter.

Parameters:

  • io (IO)

    writable IO object

  • headers (Array<Symbol, String>)

    column headers

  • dialect (Symbol, Hash, nil) (defaults to: nil)

    CSV dialect preset or custom options



63
64
65
66
67
68
69
# File 'lib/philiprehberger/csv_kit/writer.rb', line 63

def initialize(io, headers:, dialect: nil)
  @headers = headers.map(&:to_sym)
  csv_opts = {}
  csv_opts = Dialect.new(dialect).merge_into(csv_opts) if dialect
  @csv = CSV.new(io, **csv_opts)
  @csv << @headers
end

Instance Method Details

#<<(row) ⇒ self

Append a single row to the CSV output.

Parameters:

  • row (Hash, Array)

    a single data row

Returns:

  • (self)


75
76
77
78
# File 'lib/philiprehberger/csv_kit/writer.rb', line 75

def <<(row)
  @csv << row_values(row)
  self
end