# 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
# 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| 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
# File lib/hammer_cli/output/adapter/abstract.rb, line 15 def paginate_by_default? !!@paginate_by_default end
# File lib/hammer_cli/output/adapter/abstract.rb, line 39 def print_collection(fields, collection) raise NotImplementedError end
# File lib/hammer_cli/output/adapter/abstract.rb, line 23 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
# File lib/hammer_cli/output/adapter/abstract.rb, line 19 def print_message(msg, msg_params={}) puts msg.format(msg_params) end
# File lib/hammer_cli/output/adapter/abstract.rb, line 35 def print_record(fields, record) raise NotImplementedError end
# File lib/hammer_cli/output/adapter/abstract.rb, line 64 def data_for_field(field, record) Abstract.data_for_field(field, record) end
# File lib/hammer_cli/output/adapter/abstract.rb, line 73 def displayable_fields(fields, record, compact_only: false) fields.select do |field| field_data = data_for_field(field, record) if compact_only && !field_data.is_a?(HammerCLI::Output::DataMissing) true else field.display?(field_data) end end end
# File lib/hammer_cli/output/adapter/abstract.rb, line 45 def field_filter HammerCLI::Output::FieldFilter.new end
# File lib/hammer_cli/output/adapter/abstract.rb, line 68 def output_stream return @context[:output_file] if @context.has_key?(:output_file) $stdout end
# File lib/hammer_cli/output/adapter/abstract.rb, line 86 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