15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
# 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]
, csv = (relation.type), nil
previous = nil
each_tuple(relation) do |tuple,i|
if csv.nil?
= (tuple) if .nil?
csv_opts = csv_options.merge(headers: )
csv = CSV.new(string_or_io, **csv_opts)
end
previous, tuple = output_preferences.erase_redundance_in_group(previous, tuple)
csv << .map{|h| tuple[h] }
end
to_s ? string_or_io.string : string_or_io
end
|