class HammerCLI::Output::Adapter::Abstract
Public Class Methods
new(context={}, formatters={}, filters = {})
click to toggle source
# File lib/hammer_cli/output/adapter/abstract.rb, line 15 def initialize(context={}, formatters={}, filters = {}) context[:verbosity] ||= HammerCLI::V_VERBOSE @context = context @formatters = HammerCLI::Output::Formatters::FormatterLibrary.new(filter_formatters(formatters)) @paginate_by_default = true @filters = filters end
Protected Class Methods
data_for_field(field, record)
click to toggle source
# File lib/hammer_cli/output/adapter/abstract.rb, line 57 def self.data_for_field(field, record) path = field.path path.inject(record) do |record, path_key| return nil unless record && record.is_a?(Hash) if record.key?(path_key.to_sym) record[path_key.to_sym] elsif record.key?(path_key.to_s) record[path_key.to_s] else HammerCLI::Output::DataMissing.new end end end
Public Instance Methods
features()
click to toggle source
# File lib/hammer_cli/output/adapter/abstract.rb, line 9 def features return %i[] if tags.empty? tags.map { |t| HammerCLI::Output::Utils.tag_to_feature(t) } end
paginate_by_default?()
click to toggle source
# File lib/hammer_cli/output/adapter/abstract.rb, line 23 def paginate_by_default? !!@paginate_by_default end
print_collection(fields, collection, options = {})
click to toggle source
# File lib/hammer_cli/output/adapter/abstract.rb, line 47 def print_collection(fields, collection, options = {}) raise NotImplementedError end
print_error(msg, details=nil, msg_params={})
click to toggle source
# File lib/hammer_cli/output/adapter/abstract.rb, line 31 def print_error(msg, details=nil, msg_params={}) details = details.split("\n") if details.kind_of? String if details indent = " " msg += ":\n" msg += indent + details.join("\n"+indent) end $stderr.puts msg.format(msg_params) end
print_message(msg, msg_params={})
click to toggle source
# File lib/hammer_cli/output/adapter/abstract.rb, line 27 def print_message(msg, msg_params={}) puts msg.format(msg_params) end
print_record(fields, record)
click to toggle source
# File lib/hammer_cli/output/adapter/abstract.rb, line 43 def print_record(fields, record) raise NotImplementedError end
Protected Instance Methods
classes_filter()
click to toggle source
# File lib/hammer_cli/output/adapter/abstract.rb, line 90 def classes_filter return [] if @context[:show_ids] [Fields::Id] end
data_for_field(field, record)
click to toggle source
# File lib/hammer_cli/output/adapter/abstract.rb, line 72 def data_for_field(field, record) Abstract.data_for_field(field, record) end
field_filters()
click to toggle source
# File lib/hammer_cli/output/adapter/abstract.rb, line 81 def field_filters { classes_filter: classes_filter, sets_filter: sets_filter }.merge(@filters) do |_, old_filter, new_filter| old_filter + new_filter end end
filter_fields(fields)
click to toggle source
# File lib/hammer_cli/output/adapter/abstract.rb, line 53 def filter_fields(fields) HammerCLI::Output::FieldFilter.new(fields, field_filters) end
output_stream()
click to toggle source
# File lib/hammer_cli/output/adapter/abstract.rb, line 76 def output_stream return @context[:output_file] if @context.has_key?(:output_file) $stdout end
sets_filter()
click to toggle source
# File lib/hammer_cli/output/adapter/abstract.rb, line 96 def sets_filter @context[:fields] || ['DEFAULT'] end
Private Instance Methods
filter_formatters(formatters_map)
click to toggle source
# File lib/hammer_cli/output/adapter/abstract.rb, line 102 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?(features) } # put serializers first map[type] = filtered.sort_by { |f| f.required_features.include?(:serialized) ? 0 : 1 } map end end