class Bmg::Writer::Csv
Constants
- DEFAULT_OPTIONS
Attributes
csv_options[R]
output_preferences[R]
Public Class Methods
new(csv_options, output_preferences = nil)
click to toggle source
# File lib/bmg/writer/csv.rb, line 9 def initialize(csv_options, output_preferences = nil) @csv_options = DEFAULT_OPTIONS.merge(csv_options) @output_preferences = OutputPreferences.dress(output_preferences) end
Public Instance Methods
call(relation, string_or_io = nil)
click to toggle source
# File lib/bmg/writer/csv.rb, line 15 def call(relation, string_or_io = nil) require 'csv' string_or_io, to_s = string_or_io.nil? ? [StringIO.new, true] : [string_or_io, false] headers, csv = infer_headers(relation.type), nil relation.each do |tuple| if csv.nil? headers = infer_headers(tuple) if headers.nil? csv_opts = csv_options.merge(headers: headers) csv = CSV.new(string_or_io, **csv_opts) end csv << headers.map{|h| tuple[h] } end to_s ? string_or_io.string : string_or_io end