Sha256: 4bd3646367d733049a929c1d7beb82cb8fdfcd7e2769409573ad32ddf7f25033

Contents?: true

Size: 635 Bytes

Versions: 4

Compression:

Stored size: 635 Bytes

Contents

class BMC::MiniModelSerializer::Serialize
  attr_reader :object, :options

  def initialize(object, options = {})
    @object  = object
    @options = options
  end

  def call
    if object.is_a?(Hash)
      object.to_h { |k, v| [k.to_s, serialize(v)] }
    elsif object.is_a?(Enumerable)
      object.map { |e| serialize(e) }
    elsif (serializer = "#{object.class}Serializer".safe_constantize)
      serializer.call(object, options)
    else
      object.as_json
    end
  end

  def self.call(...)
    new(...).call
  end

  private

  def serialize(object)
    BMC::MiniModelSerializer::Serialize.call(object, options)
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
bmc-1.4.0 app/libs/bmc/mini_model_serializer/serialize.rb
bmc-1.3.5 app/libs/bmc/mini_model_serializer/serialize.rb
bmc-1.3.4 app/libs/bmc/mini_model_serializer/serialize.rb
bmc-1.3.3 app/libs/bmc/mini_model_serializer/serialize.rb