Class: Aspera::Cli::Result::SingleObject

Inherits:
Result
  • Object
show all
Defined in:
lib/aspera/cli/result.rb

Overview

Single object result (Hash)

Instance Method Summary collapse

Constructor Details

#initialize(data, fields: nil) ⇒ SingleObject

Returns a new instance of SingleObject.



199
200
201
202
# File 'lib/aspera/cli/result.rb', line 199

def initialize(data, fields: nil)
  Aspera.assert_type(data, Hash){'single object result data'}
  super(data: data, fields: fields)
end

Instance Method Details

#format(formatter) ⇒ Object



204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
# File 'lib/aspera/cli/result.rb', line 204

def format(formatter)
  case formatter.format_type
  when :image
    # Extract single field for image display
    data_array = [@data]
    fields = formatter.compute_fields(data_array, @fields)
    Aspera.assert(fields.length == 1, 'select a single field to display', type: Cli::BadArgument)
    Aspera.assert(@data.key?(fields.first), 'no such field', type: Cli::BadArgument)
    # Create an Image result and format it
    Image.new(@data[fields.first]).format(formatter)
  when :table, :csv
    Aspera.assert_type(@data, Hash){'result'}
    if @data.empty?
      formatter.display_message(:data, formatter.special_format('empty dict'))
    else
      data = formatter.flat_hash? ? DotContainer.new(@data).to_dotted : @data
      formatter.display_table([data], formatter.compute_fields([data], @fields), single: true)
    end
  else
    super
  end
end