class CSV::Writer

Note: Don't use this class directly. This is an internal class.

Attributes

headers[R]
lineno[R]

A CSV::Writer receives an output, prepares the header, format and output. It allows us to write new rows in the object and rewind it.

Public Class Methods

new(output, options) click to toggle source
# File lib/csv/writer.rb, line 16
def initialize(output, options)
  @output = output
  @options = options
  @lineno = 0
  @fields_converter = nil
  prepare
  if @options[:write_headers] and @headers
    self << @headers
  end
  @fields_converter = @options[:fields_converter]
end

Public Instance Methods

<<(row) click to toggle source

Adds a new row

# File lib/csv/writer.rb, line 31
def <<(row)
  case row
  when Row
    row = row.fields
  when Hash
    row = @headers.collect {|header| row[header]}
  end

  @headers ||= row if @use_headers
  @lineno += 1

  if @fields_converter
    quoted_fields = [false] * row.size
    row = @fields_converter.convert(row, nil, lineno, quoted_fields)
  end

  i = -1
  converted_row = row.collect do |field|
    i += 1
    quote(field, i)
  end
  line = converted_row.join(@column_separator) + @row_separator
  if @output_encoding
    line = line.encode(@output_encoding)
  end
  @output << line

  self
end
rewind() click to toggle source

Winds back to the beginning

# File lib/csv/writer.rb, line 64
def rewind
  @lineno = 0
  @headers = nil if @options[:headers].nil?
end