class DumbSerializer::AttrsScanner

Attributes

object[RW]

Public Class Methods

new(object) click to toggle source
# File lib/dumb_serializer/attrs_scanner.rb, line 6
def initialize(object)
  @object = object
end

Public Instance Methods

scan() click to toggle source
# File lib/dumb_serializer/attrs_scanner.rb, line 10
def scan
  raise CoreTypeScanError if belongs_to_core?
  recursive_build
end

Private Instance Methods

belongs_to_core?() click to toggle source
# File lib/dumb_serializer/attrs_scanner.rb, line 44
def belongs_to_core?
  CORE_TYPES.include?(object.class)
end
decompose(attrs) click to toggle source
# File lib/dumb_serializer/attrs_scanner.rb, line 23
def decompose(attrs)
  attrs.each do |name, value|
    self.object = value

    next if belongs_to_core?
    attrs[name] = nested? ? recursive_build : non_variable_instance
  end
end
nested?() click to toggle source
# File lib/dumb_serializer/attrs_scanner.rb, line 48
def nested?
  object.instance_variables.any?
end
non_variable_instance() click to toggle source
# File lib/dumb_serializer/attrs_scanner.rb, line 36
def non_variable_instance
  { dd_class: object_class }
end
object_attrs() click to toggle source
# File lib/dumb_serializer/attrs_scanner.rb, line 17
def object_attrs
  object.instance_variables.each_with_object({}) do |attr, hash|
    hash[attr.to_s.delete('@').to_sym] = object.instance_variable_get(attr)
  end
end
object_class() click to toggle source
# File lib/dumb_serializer/attrs_scanner.rb, line 40
def object_class
  object.class.to_s
end
recursive_build() click to toggle source
# File lib/dumb_serializer/attrs_scanner.rb, line 32
def recursive_build
  { dd_class: object_class, dd_vars: decompose(object_attrs) }
end