class HammerCLI::Output::Adapter::Abstract

Public Class Methods

new(context={}, formatters={}) click to toggle source
# File lib/hammer_cli/output/adapter/abstract.rb, line 9
def initialize(context={}, formatters={})
  @context = context
  @formatters = HammerCLI::Output::Formatters::FormatterLibrary.new(filter_formatters(formatters))
  @paginate_by_default = true
end

Protected Class Methods

data_for_field(field, record) click to toggle source
# File lib/hammer_cli/output/adapter/abstract.rb, line 49
def self.data_for_field(field, record)
  path = field.path

  path.inject(record) do |record, path_key|
    if record && record.kind_of?(Hash) && record.has_key?(path_key.to_sym)
      record[path_key.to_sym]
    elsif record && record.kind_of?(Hash) && record.has_key?(path_key.to_s)
      record[path_key.to_s]
    else
      return nil
    end
  end
end

Public Instance Methods

paginate_by_default?() click to toggle source
# File lib/hammer_cli/output/adapter/abstract.rb, line 15
def paginate_by_default?
  !!@paginate_by_default
end
print_collection(fields, collection) click to toggle source
print_error(msg, details=nil, msg_params={}) click to toggle source
print_message(msg, msg_params={}) click to toggle source
print_record(fields, record) click to toggle source
tags() click to toggle source
# File lib/hammer_cli/output/adapter/abstract.rb, line 5
def tags
  []
end

Protected Instance Methods

data_for_field(field, record) click to toggle source
# File lib/hammer_cli/output/adapter/abstract.rb, line 63
def data_for_field(field, record)
  Abstract.data_for_field(field, record)
end
field_filter() click to toggle source
# File lib/hammer_cli/output/adapter/abstract.rb, line 45
def field_filter
  HammerCLI::Output::FieldFilter.new
end

Private Instance Methods

filter_formatters(formatters_map) click to toggle source
# File lib/hammer_cli/output/adapter/abstract.rb, line 69
def filter_formatters(formatters_map)
  formatters_map ||= {}
  formatters_map.inject({}) do |map, (type, formatter_list)|
    # remove incompatible formatters
    filtered = formatter_list.select { |f| f.match?(tags) }
    # put serializers first
    map[type] = filtered.sort_by { |f| f.tags.include?(:flat) ? 0 : 1 }
    map
  end
end