Module: Typelizer::SerializerPlugins::Auto

Defined in:
lib/typelizer/serializer_plugins/auto.rb

Class Method Summary collapse

Class Method Details

.new(serializer:, config:, context:) ⇒ Object



5
6
7
# File 'lib/typelizer/serializer_plugins/auto.rb', line 5

def new(serializer:, config:, context:)
  plugin(serializer).new(serializer: serializer, config: config, context: context)
end

.plugin(serializer) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/typelizer/serializer_plugins/auto.rb', line 9

def plugin(serializer)
  if defined?(::Oj::Serializer) && serializer.ancestors.include?(::Oj::Serializer)
    OjSerializers
  elsif defined?(::Alba) && serializer.ancestors.include?(::Alba::Resource)
    Alba
  elsif defined?(ActiveModel::Serializer) && serializer.ancestors.include?(ActiveModel::Serializer)
    AMS
  elsif defined?(::Panko::Serializer) && serializer.ancestors.include?(::Panko::Serializer)
    Panko
  else
    raise "Can't guess serializer plugin for #{serializer}. " \
            "Please specify it with `config.serializer_plugin`."
  end
end