class HammerCLI::Output::Adapter::CSValues
Public Class Methods
new(context = {}, formatters = {}, filters = {})
click to toggle source
Calls superclass method
HammerCLI::Output::Adapter::Abstract::new
# File lib/hammer_cli/output/adapter/csv.rb, line 129 def initialize(context = {}, formatters = {}, filters = {}) super @paginate_by_default = false end
Public Instance Methods
features()
click to toggle source
# File lib/hammer_cli/output/adapter/csv.rb, line 134 def features return %i[serialized inline] if tags.empty? tags.map { |t| HammerCLI::Output::Utils.tag_to_feature(t) } end
print_collection(fields, collection, options = {})
click to toggle source
# File lib/hammer_cli/output/adapter/csv.rb, line 152 def print_collection(fields, collection, options = {}) current_chunk = options[:current_chunk] || :single fields = filter_fields(fields).filter_by_classes .filter_by_sets .filter_by_data(collection.first, compact_only: true) .filtered_fields 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] && %i[first single].include?(current_chunk) rows.each do |row| csv << Cell.values(headers, row) end end output_stream.puts csv_string end
print_message(msg, msg_params={})
click to toggle source
# File lib/hammer_cli/output/adapter/csv.rb, line 173 def print_message(msg, msg_params={}) csv_string = generate do |csv| labels = [_("Message")] data = [msg.format(msg_params)] unless msg_params.nil? id = msg_params["id"] || msg_params[:id] name = msg_params["name"] || msg_params[:name] if id labels << _("Id") data << id end if name labels << _("Name") data << name end end csv << labels csv << data end puts csv_string end
print_record(fields, record)
click to toggle source
# File lib/hammer_cli/output/adapter/csv.rb, line 148 def print_record(fields, record) print_collection(fields, [record].flatten(1)) end
row_data(fields, collection)
click to toggle source
# File lib/hammer_cli/output/adapter/csv.rb, line 140 def row_data(fields, collection) result = [] collection.each do |data| result << Cell.create_cells(FieldWrapper.wrap(fields), data, @formatters) end result end
Private Instance Methods
default_headers(fields)
click to toggle source
# File lib/hammer_cli/output/adapter/csv.rb, line 207 def default_headers(fields) fields.map(&:label) end
generate(&block)
click to toggle source
# File lib/hammer_cli/output/adapter/csv.rb, line 199 def generate(&block) CSV.generate( :col_sep => @context[:csv_separator] || ',', :encoding => 'utf-8', &block ) end