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