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 row = @fields_converter.convert(row, nil, lineno) 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 63 def rewind @lineno = 0 @headers = nil if @options[:headers].nil? end