class HammerCLI::Output::Adapter::CSValues::Cell
Attributes
data[RW]
field_wrapper[RW]
Public Class Methods
create_cells(field_wrappers, data, formatters)
click to toggle source
# File lib/hammer_cli/output/adapter/csv.rb, line 17 def self.create_cells(field_wrappers, data, formatters) results = [] field_wrappers.each do |field_wrapper| field = field_wrapper.field if field.is_a? Fields::Collection results = results + expand_collection(field, data, formatters) elsif field.is_a?(Fields::ContainerField) results = results + expand_container(field, data, formatters) else results << Cell.new(field_wrapper, data, formatters) end end return results end
data_for_field(field, data)
click to toggle source
# File lib/hammer_cli/output/adapter/csv.rb, line 76 def self.data_for_field(field, data) HammerCLI::Output::Adapter::CSValues.data_for_field(field, data) end
expand_collection(field, data, formatters)
click to toggle source
# File lib/hammer_cli/output/adapter/csv.rb, line 56 def self.expand_collection(field, data, formatters) results = [] collection_data = data_for_field(field, data) || [] collection_data.each_with_index do |child_data, i| field.fields.each do |child_field| child_field_wrapper = FieldWrapper.new(child_field) child_field_wrapper.append_prefix(field.label) child_field_wrapper.append_suffix((i + 1).to_s) results << Cell.new(child_field_wrapper, collection_data[i] || {}, formatters) end end results end
expand_container(field, data, formatters)
click to toggle source
# File lib/hammer_cli/output/adapter/csv.rb, line 70 def self.expand_container(field, data, formatters) child_fields = FieldWrapper.wrap(field.fields) child_fields.each{ |child| child.append_prefix(field.label) } create_cells(child_fields, data_for_field(field, data), formatters) end
headers(cells, context)
click to toggle source
# File lib/hammer_cli/output/adapter/csv.rb, line 45 def self.headers(cells, context) cells.map(&:field_wrapper).select { |fw| ! fw.is_id? || context[:show_ids] }.map(&:display_name) end
new(field_wrapper, data, formatters)
click to toggle source
# File lib/hammer_cli/output/adapter/csv.rb, line 11 def initialize(field_wrapper, data, formatters) @field_wrapper = field_wrapper @data = data @formatters = formatters end
values(headers, cells)
click to toggle source
# File lib/hammer_cli/output/adapter/csv.rb, line 38 def self.values(headers, cells) headers.map do |header| cell = cells.find { |cell| cell.in_column?(header) } cell ? cell.formatted_value : '' end end
Public Instance Methods
formatted_value()
click to toggle source
# File lib/hammer_cli/output/adapter/csv.rb, line 32 def formatted_value WrapperFormatter.new( @formatters.formatter_for_type(@field_wrapper.field.class), @field_wrapper.field.parameters).format(value) end
in_column?(header)
click to toggle source
# File lib/hammer_cli/output/adapter/csv.rb, line 50 def in_column?(header) self.field_wrapper.display_name == header end
Private Instance Methods
value()
click to toggle source
# File lib/hammer_cli/output/adapter/csv.rb, line 80 def value Cell.data_for_field(@field_wrapper.field, data) end