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)