# File lib/hammer_cli/output/adapter/csv.rb, line 138 def initialize(context={}, formatters={}) super @paginate_by_default = false end
# File lib/hammer_cli/output/adapter/csv.rb, line 159 def print_collection(fields, collection) fields = displayable_fields(fields, collection.first, compact_only: true) rows = row_data(fields, collection) # get headers using columns heuristic headers = rows.map{ |r| Cell.headers(r, @context) }.max_by{ |headers| headers.size } # or use headers from output definition headers ||= default_headers(fields) csv_string = generate do |csv| csv << headers if headers && !@context[:no_headers] rows.each do |row| csv << Cell.values(headers, row) end end output_stream.puts csv_string end
# File lib/hammer_cli/output/adapter/csv.rb, line 175 def print_message(msg, msg_params={}) csv_string = generate do |csv| id = msg_params["id"] || msg_params[:id] name = msg_params["name"] || msg_params[:name] labels = [_("Message")] data = [msg.format(msg_params)] if id labels << _("Id") data << id end if name labels << _("Name") data << name end csv << labels csv << data end puts csv_string end
# File lib/hammer_cli/output/adapter/csv.rb, line 155 def print_record(fields, record) print_collection(fields, [record].flatten(1)) end
# File lib/hammer_cli/output/adapter/csv.rb, line 147 def row_data(fields, collection) result = [] collection.each do |data| result << Cell.create_cells(FieldWrapper.wrap(fields), data, @formatters) end result end
# File lib/hammer_cli/output/adapter/csv.rb, line 209 def default_headers(fields) fields.select{ |f| !(f.class <= Fields::Id) || @context[:show_ids] }.map { |f| f.label } end
# File lib/hammer_cli/output/adapter/csv.rb, line 201 def generate(&block) CSV.generate( :col_sep => @context[:csv_separator] || ',', :encoding => 'utf-8', &block ) end