lib/hammer_cli/output/adapter/abstract.rb in hammer_cli-0.13.1 vs lib/hammer_cli/output/adapter/abstract.rb in hammer_cli-0.14.0

- old
+ new

@@ -48,16 +48,17 @@ 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) + return nil unless record && record.is_a?(Hash) + if record.key?(path_key.to_sym) record[path_key.to_sym] - elsif record && record.kind_of?(Hash) && record.has_key?(path_key.to_s) + elsif record.key?(path_key.to_s) record[path_key.to_s] else - return nil + HammerCLI::Output::DataMissing.new end end end def data_for_field(field, record) @@ -65,9 +66,20 @@ end def output_stream return @context[:output_file] if @context.has_key?(:output_file) $stdout + end + + 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 private def filter_formatters(formatters_map)