Module: Ecraft::Extensions::Mixins::Hashable

Defined in:
lib/ecraft/extensions/mixins/hashable.rb

Instance Method Summary collapse

Instance Method Details

#to_h(*targets) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/ecraft/extensions/mixins/hashable.rb', line 17

def to_h(*targets)
  target = get_target(targets)

  if target.is_a?(Hash)
    strip_string_recurse_enumerable_values(target)
  elsif target.is_a?(Array)
    strip_array(target)
  elsif target.is_a?(OpenStruct)
    target.marshal_dump
  elsif value_type?(target)
    target
  # We need to check to ensure we don't call ourselves recursively.
  elsif !target.class.included_modules.include?(Hashable) && target.respond_to?(:to_h)
    target.to_h
  else
    turn_object_into_hash(target)
  end
end

#to_hash(target = nil) ⇒ Object



36
37
38
# File 'lib/ecraft/extensions/mixins/hashable.rb', line 36

def to_hash(target = nil)
  to_h(target)
end