class SharkOnLambda::Inferrers::SerializerInferrer

Public Class Methods

new(object_class) click to toggle source
# File lib/shark_on_lambda/inferrers/serializer_inferrer.rb, line 6
def initialize(object_class)
  @object_class = object_class
end

Public Instance Methods

serializer_class() click to toggle source
# File lib/shark_on_lambda/inferrers/serializer_inferrer.rb, line 10
def serializer_class
  return @serializer_class if defined?(@serializer_class)

  serializer_class_names.each do |serializer_class_name|
    @serializer_class = serializer_class_name.safe_constantize
    break if @serializer_class.present?
  end

  @serializer_class
end

Protected Instance Methods

object_class() click to toggle source
# File lib/shark_on_lambda/inferrers/serializer_inferrer.rb, line 23
def object_class
  unless @object_class.is_a?(String) || @object_class.is_a?(Symbol)
    return @object_class
  end

  @object_class.to_s.camelize.constantize
end
serializer_class_names() click to toggle source
# File lib/shark_on_lambda/inferrers/serializer_inferrer.rb, line 31
def serializer_class_names
  return @serializer_class_names if defined?(@serializer_class_names)

  @serializer_class_names =
    object_class.ancestors.reduce([]) do |result, ancestor|
      ancestor_name = ancestor.name
      next result if ancestor_name.blank?

      result << serializer_name_from_model_name(ancestor_name)
    end
end
serializer_name_from_model_name(model_name) click to toggle source
# File lib/shark_on_lambda/inferrers/serializer_inferrer.rb, line 43
def serializer_name_from_model_name(model_name)
  "#{model_name.underscore}_serializer".camelize
end