Class: Separatum::Converters::Object2Hash

Inherits:
Object
  • Object
show all
Defined in:
lib/separatum/converters/object2_hash.rb

Instance Method Summary collapse

Constructor Details

#initialize(**params) ⇒ Object2Hash

Returns a new instance of Object2Hash.



4
5
6
# File 'lib/separatum/converters/object2_hash.rb', line 4

def initialize(**params)
  @common_fields = params[:common_fields] || {}
end

Instance Method Details

#call(*objects, **params) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/separatum/converters/object2_hash.rb', line 8

def call(*objects, **params)
  objects.flatten.map do |object|
    hash =
      if object.respond_to?(:as_json)
        object.as_json
      elsif object.respond_to?(:to_hash)
        object.to_hash
      elsif object.respond_to?(:to_h)
        object.to_h
      else
        fail
      end
    klass = object.class.respond_to?(:name) ? object.class.name : object.class.to_s
    hash.symbolize_keys.merge(_klass: klass).merge(@common_fields)
  end
end