Sha256: fe53497c265f4bbf700ea202012e509a5f91b306c88abd6ebbffad699b62b50c

Contents?: true

Size: 653 Bytes

Versions: 71

Compression:

Stored size: 653 Bytes

Contents

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

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

  def call
    if object.is_a?(Hash)
      object.map { |k, v| [k.to_s, serialize(v)] }.to_h
    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(*args)
    new(*args).call
  end

  private

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

Version data entries

71 entries across 71 versions & 1 rubygems

Version Path
agilibox-1.11.0 app/libs/agilibox/mini_model_serializer/serialize.rb
agilibox-1.10.5 app/libs/agilibox/mini_model_serializer/serialize.rb
agilibox-1.10.2 app/libs/agilibox/mini_model_serializer/serialize.rb
agilibox-1.10.1 app/libs/agilibox/mini_model_serializer/serialize.rb
agilibox-1.10.0 app/libs/agilibox/mini_model_serializer/serialize.rb
agilibox-1.9.20 app/libs/agilibox/mini_model_serializer/serialize.rb
agilibox-1.9.19 app/libs/agilibox/mini_model_serializer/serialize.rb
agilibox-1.9.18 app/libs/agilibox/mini_model_serializer/serialize.rb
agilibox-1.9.17 app/libs/agilibox/mini_model_serializer/serialize.rb
agilibox-1.9.16 app/libs/agilibox/mini_model_serializer/serialize.rb
agilibox-1.9.15 app/libs/agilibox/mini_model_serializer/serialize.rb
agilibox-1.9.14 app/libs/agilibox/mini_model_serializer/serialize.rb
agilibox-1.9.13 app/libs/agilibox/mini_model_serializer/serialize.rb
agilibox-1.9.12 app/libs/agilibox/mini_model_serializer/serialize.rb
agilibox-1.9.11 app/libs/agilibox/mini_model_serializer/serialize.rb
agilibox-1.9.10 app/libs/agilibox/mini_model_serializer/serialize.rb
agilibox-1.9.9 app/libs/agilibox/mini_model_serializer/serialize.rb
agilibox-1.9.8 app/libs/agilibox/mini_model_serializer/serialize.rb
agilibox-1.9.7 app/libs/agilibox/mini_model_serializer/serialize.rb
agilibox-1.9.6 app/libs/agilibox/mini_model_serializer/serialize.rb