class HammerCLI::Output::Adapter::TreeStructure
Public Class Methods
new(context={}, formatters={})
click to toggle source
Calls superclass method
HammerCLI::Output::Adapter::Abstract.new
# File lib/hammer_cli/output/adapter/tree_structure.rb, line 4 def initialize(context={}, formatters={}) super @paginate_by_default = false end
Public Instance Methods
prepare_collection(fields, collection)
click to toggle source
# File lib/hammer_cli/output/adapter/tree_structure.rb, line 9 def prepare_collection(fields, collection) collection.map do |element| render_fields(fields, element) end end
Protected Instance Methods
field_filter()
click to toggle source
# File lib/hammer_cli/output/adapter/tree_structure.rb, line 16 def field_filter filtered = [] filtered << Fields::Id unless @context[:show_ids] HammerCLI::Output::FieldFilter.new(filtered) end
filter_fields(fields, data)
click to toggle source
# File lib/hammer_cli/output/adapter/tree_structure.rb, line 22 def filter_fields(fields, data) field_filter.filter(fields).reject do |field| field_data = data_for_field(field, data) not field.display?(field_data) end end
map_data(data)
click to toggle source
# File lib/hammer_cli/output/adapter/tree_structure.rb, line 63 def map_data(data) if data.any? { |d| d.key?(nil) } data.map! { |d| d.values.first } end data end
numbered_data(data)
click to toggle source
# File lib/hammer_cli/output/adapter/tree_structure.rb, line 70 def numbered_data(data) i = 0 data.inject({}) do |hash, value| i += 1 hash.merge(i => value) end end
render_data(field, data)
click to toggle source
# File lib/hammer_cli/output/adapter/tree_structure.rb, line 51 def render_data(field, data) if field.is_a?(Fields::Collection) if(field.parameters[:numbered]) numbered_data(data) else # necislovana kolekce je pole data end else data.first end end
render_field(field, data)
click to toggle source
# File lib/hammer_cli/output/adapter/tree_structure.rb, line 39 def render_field(field, data) if field.is_a? Fields::ContainerField data = [data] unless data.is_a? Array fields_data = data.map do |d| render_fields(field.fields, d) end render_data(field, map_data(fields_data)) else data end end
render_fields(fields, data)
click to toggle source
# File lib/hammer_cli/output/adapter/tree_structure.rb, line 29 def render_fields(fields, data) fields = filter_fields(fields, data) fields.reduce({}) do |hash, field| field_data = data_for_field(field, data) next unless field.display?(field_data) hash.update(field.label => render_field(field, field_data)) end end